|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sun.electric.technology.Technology
public class Technology
Technology is the base class for all of the specific technologies in Electric. It is organized into two main areas: nodes and arcs. Both nodes and arcs are composed of Layers.
Subclasses of Technology usually start by defining the Layers (such as Metal-1, Metal-2, etc.) Then the ArcProto objects are created, built entirely from Layers. Next PrimitiveNode objects are created, and they have Layers as well as connectivity to the ArcProtos. The Technology concludes with miscellaneous data assignments of technology-wide information.
Here are the nodes in a sample CMOS technology. Note that there are two types of transistors and diffusion contacts, one for Well and one for Substrate. Each layer that can exist as a wire must have a pin node (in this case, metal, polysilicon, and two flavors of diffusion. Note that there are pure-layer nodes at the bottom which allow arbitrary geometry to be constructed.
The Schematic technology has some unusual features.
Conceptually, a Technology has 3 types of information:
Nested Class Summary | |
---|---|
protected static class |
Technology.ArcLayer
Defines a single layer of a ArcProto. |
static class |
Technology.CarbonNanotube
Class CarbonNanotube determines the location of carbon nanotube rails in the transistor. |
static class |
Technology.MultiCutData
Class MultiCutData determines the locations of cuts in a multi-cut contact node. |
static class |
Technology.NodeLayer
Defines a single layer of a PrimitiveNode. |
class |
Technology.SizeCorrector
|
class |
Technology.State
|
static class |
Technology.TechPoint
Defines a point in space that is relative to a NodeInst's bounds. |
Field Summary | |
---|---|
protected static boolean |
ALWAYS_SKIP_WIPED_PINS
Skip wiped pins both in electrical and non-electrical mode |
protected XMLRules |
cachedRules
Cached rules for the technology. |
static Version |
DISK_VERSION_1
Jelib writes base sizes since this Electric Version |
static Version |
DISK_VERSION_2
Jelib writes oversize over standard primitive since this Electric Version |
static ImmutableArrayList<Technology> |
EMPTY_LIST
|
protected Xml.MenuPalette |
factoryMenuPalette
Xml representation of menu palette |
protected XMLRules |
factoryRules
Factory rules for the technology. |
protected java.util.List<Foundry> |
foundries
static list of all Manufacturers in Electric |
static boolean |
IMMUTABLE_TECHS
|
static com.sun.electric.technology.Technology.LayerHeight |
LAYERS_BY_HEIGHT
|
static com.sun.electric.technology.Technology.LayerHeight |
LAYERS_BY_HEIGHT_LIFT_CONTACTS
|
static int |
N_TYPE
indicates n-type objects. |
static Technology[] |
NULL_ARRAY
|
protected java.util.HashMap<java.lang.String,ArcProto> |
oldArcNames
Old names of arcs |
protected java.util.HashMap<java.lang.String,PrimitiveNode> |
oldNodeNames
Old names of primitive nodes |
static int |
P_TYPE
indicates p-type objects. |
protected java.lang.String |
paramFoundry
default foundry name for this Technology |
protected java.lang.Integer |
paramNumMetalLayers
number of metals for this Technology. |
static java.lang.String |
SPECIALMENUCELL
|
static java.lang.String |
SPECIALMENUEXPORT
|
static java.lang.String |
SPECIALMENUHIGH
|
static java.lang.String |
SPECIALMENUMISC
|
static java.lang.String |
SPECIALMENUPORT
|
static java.lang.String |
SPECIALMENUPURE
|
static java.lang.String |
SPECIALMENUSEPARATOR
|
static java.lang.String |
SPECIALMENUSPICE
|
static java.lang.String |
SPECIALMENUTEXT
|
static java.lang.String |
TECH_NODE
Relative path in Preferences where technology Settings and Preferences are stored |
protected TechFactory |
techFactory
TechFactory which created this Technology |
static Variable.Key |
TRANS_CONTACT
key of Variable for saving scalable transistor contact information. |
protected Xml.Technology |
xmlTech
Xml representation of this Technology |
Constructor Summary | |
---|---|
protected |
Technology(Generic generic,
TechFactory techFactory)
Constructs a Technology . |
protected |
Technology(Generic generic,
TechFactory techFactory,
Foundry.Type defaultFoundry,
int defaultNumMetals)
Constructs a Technology . |
protected |
Technology(Generic generic,
TechFactory techFactory,
java.util.Map<TechFactory.Param,java.lang.Object> techParams,
Foundry.Type defaultFoundry,
int defaultNumMetals)
Constructs a Technology . |
|
Technology(Generic generic,
TechFactory techFactory,
java.util.Map<TechFactory.Param,java.lang.Object> techParams,
Xml.Technology t)
|
protected |
Technology(IdManager idManager,
Generic generic,
TechFactory techFactory,
java.util.Map<TechFactory.Param,java.lang.Object> techParams,
Foundry.Type defaultFoundry,
int defaultNumMetals)
Constructs a Technology . |
Method Summary | |
---|---|
void |
addArcProto(ArcProto ap)
Method to add a new ArcProto to this Technology. |
void |
addLayer(Layer layer)
Method to add a new Layer to this Technology. |
void |
addNodeProto(PrimitiveNode np)
Method to add a new PrimitiveNode to this Technology. |
boolean |
cleanUnusedNodesInLibrary(NodeInst ni,
java.util.List<Geometric> list)
Method to clean libraries with unused primitive nodes. |
int |
compareTo(Technology that)
Compares Technologies by their names. |
protected Poly[] |
computeShapeOfNode(CellBackup.Memoization m,
ImmutableNodeInst n,
boolean electrical,
boolean reasonable,
Technology.NodeLayer[] primLayers,
EGraphics graphicsOverride)
Returns the polygons that describe node "ni", given a set of NodeLayer objects to use. |
ArcProto |
convertOldArcName(java.lang.String name)
Method to convert old primitive arc names to their proper ArcProtos. |
PrimitiveNode |
convertOldNodeName(java.lang.String name)
Method to convert old primitive node names to their proper NodeProtos. |
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)
|
void |
dump(java.io.PrintWriter out,
java.util.Map<Setting,java.lang.Object> settings)
|
protected void |
dumpExtraProjectSettings(java.io.PrintWriter out,
java.util.Map<Setting,java.lang.Object> settings)
|
ArcProto |
findArcProto(java.lang.String name)
Returns the ArcProto in this technology with a particular name. |
protected Foundry |
findFoundry(java.lang.String name)
Find the Foundry in this technology with a particular name. |
Layer |
findLayer(java.lang.String layerName)
Method to find a Layer with a given name. |
Layer |
findLayerFromFunction(Layer.Function fun,
int functionExtras)
Method to find the Layer in this Technology that matches a function description. |
PrimitiveNode |
findNodeProto(java.lang.String name)
Returns the PrimitiveNode in this technology with a particular name. |
static Technology |
findTechnology(java.lang.String name)
Find the Technology with a particular name. |
static Technology |
findTechnology(TechId techId)
Find the Technology with a particular TechId. |
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. |
ArcProto |
getArcProto(ArcProtoId arcProtoId)
Returns the ArcProto in this technology with a particular Id |
java.util.Iterator<ArcProto> |
getArcs()
Returns an Iterator on the ArcProto objects in this technology. |
java.util.Collection<ArcProto> |
getArcsCollection()
Retusn a collection of the ArcProto objects in this technology |
XMLRules |
getCachedRules()
Method to retrieve cached rules |
static Technology |
getCMOS90Technology()
Method to return the CMOS 90 nanometer technology. |
java.awt.Color[] |
getColorMap()
Returns the color map for transparent layers in this technology. |
static Technology |
getCurrent()
Returns the current Technology. |
Technology.State |
getCurrentState()
|
double |
getDiffAlpha()
Method to get the diffusion to gate capacitance ratio for Logical Effort. |
Setting |
getDiffAlphaSetting()
Returns project preferences to tell the diffusion to gate capacitance ratio for Logical Effort. |
XMLRules |
getFactoryDesignRules()
Method to get the factory design rules. |
Xml.MenuPalette |
getFactoryMenuPalette()
Method to construct a factory default Xml menu palette. |
double |
getFactoryResolution()
Method to retrieve the default resolution associated to the technology. |
java.awt.Color[] |
getFactoryTransparentLayerColors()
Method to return the factory default colors for the transparent layers in this Technology. |
java.util.Iterator<Foundry> |
getFoundries()
Get an iterator over all of the Manufacturers. |
double |
getGateCapacitance()
Method to get the Gate Capacitance for Logical Effort. |
Setting |
getGateCapacitanceSetting()
Returns project preferences to tell the Gate Capacitance for Logical Effort. |
Setting |
getGateIncludedSetting()
Returns project preferences to tell gate inclusion. |
double |
getGateLengthSubtraction()
Gets the gate length subtraction for this Technology (in microns). |
Setting |
getGateLengthSubtractionSetting()
Returns project preferences to tell the gate length subtraction for this Technology (in microns) This is used because there is sometimes a subtracted offset from the layout to the drawn length. |
java.util.Map<Layer,java.lang.String> |
getGDSLayers()
Method to return the map from Layers of this Technology to their GDS names in current foundry. |
Setting |
getGroundNetIncludedSetting()
Returns project preferences to tell ground network inclusion. |
TechId |
getId()
Returns the TechId of this technology. |
Layer |
getLayer(int index)
Returns a specific Layer number in this Technology. |
Layer |
getLayer(LayerId layerId)
Returns the Layer in this technology with a particular Id |
static Layer |
getLayerFromOverride(java.lang.String override,
int startPos,
char endChr,
Technology tech)
|
java.util.Iterator<Layer> |
getLayers()
Returns an Iterator on the Layers in this Technology. |
java.util.List<Layer> |
getLayersSortedByHeight()
Method to make a sorted list of layers in this Technology. |
java.util.List<Layer> |
getLayersSortedByName()
Method to make a sorted list of layers in this Technology based on their name. |
double |
getMaxSeriesResistance()
Get the maximum series resistance for layout extraction for this Technology. |
Setting |
getMaxSeriesResistanceSetting()
Returns project preferences to tell the maximum series resistance for layout extraction for this Technology. |
java.util.List<NodeProto> |
getMetalContactCluster(Layer l1,
Layer l2)
FOR Wiring tool |
double |
getMinCapacitance()
Returns the minimum capacitance of this Technology. |
Setting |
getMinCapacitanceSetting()
Returns project preferences to tell the minimum capacitance of this Technology. |
double |
getMinResistance()
Returns the minimum resistance of this Technology. |
Setting |
getMinResistanceSetting()
Returns project preferences to tell the minimum resistance of this Technology. |
static Technology |
getMocmosTechnology()
Method to return the MOSIS CMOS technology. |
Technology.MultiCutData |
getMultiCutData(NodeInst ni)
Method to get a multi-cut structure associated to a NodeInst representing a Multiple-cut contact. |
ERectangle |
getNodeInstBaseRectangle(NodeInst ni)
Method to get the base (highlight) ERectangle associated with a NodeInst in this PrimitiveNode. |
java.util.Iterator<PrimitiveNode> |
getNodes()
Returns an Iterator on the PrimitiveNode objects in this technology. |
java.util.Collection<PrimitiveNode> |
getNodesCollection()
Retusn a collection of the PrimitiveNode objects in this technology |
java.util.List<PrimitiveNode> |
getNodesSortedByName()
Method to return a sorted list of nodes in the technology |
int |
getNumArcs()
Returns the number of ArcProto objects in this technology. |
int |
getNumLayers()
Returns the number of Layers in this Technology. |
int |
getNumMetals()
Dummy method overridden by implementing technologies to define the number of metal layers in the technology. |
Setting |
getNumMetalsSetting()
Returns project preferences to tell the number of metal layers in the MoCMOS technology. |
int |
getNumNodes()
Returns the number of PrimitiveNodes objects in this technology. |
int |
getNumTransparentLayers()
Returns the number of transparent layers in this technology. |
java.util.Map<java.lang.String,ArcProto> |
getOldArcNames()
|
java.util.Map<java.lang.String,PrimitiveNode> |
getOldNodeNames()
|
static java.util.Map<java.lang.String,java.lang.Object> |
getParamValuesByXmlPath()
Loads from Java Preferences values of technology parameters. |
java.lang.String |
getPrefFoundry()
Method to get foundry in Tech Palette. |
Setting |
getPrefFoundrySetting()
Returns project preferences to tell foundry for DRC rules. |
PrimitiveNode.Function |
getPrimitiveFunction(PrimitiveNode pn,
int techBits)
Method to return the pure "NodeProto Function" a PrimitiveNode in this Technology. |
PrimitiveNode |
getPrimitiveNode(PrimitiveNodeId primitiveNodeId)
Returns the PrimitiveNode in this technology with a particular Id |
Setting.Group |
getProjectSettings()
|
Setting.RootGroup |
getProjectSettingsRoot()
|
PrimitiveNodeSize |
getResistorSize(NodeInst ni,
VarContext context)
Method to return the size of a resistor-type NodeInst in this Technology. |
static java.lang.StringBuffer |
getRuleDifferences(DRCRules origRules,
DRCRules newRules)
Method to compare a Rules set with the "factory" set and construct an override string. |
int |
getRuleNodeIndex(java.lang.String name)
Method to determine index of layer or node involved in the rule |
double |
getScale()
Returns the scale for this Technology. |
Setting |
getScaleSetting()
Returns project preferences to tell the scale of this technology. |
java.lang.String |
getScaleVariableName()
Method to obtain the Variable name for scaling this Technology. |
Foundry |
getSelectedFoundry()
Method to get the foundry index associated with this technology. |
Setting |
getSetting(java.lang.String xmlPath)
|
Setting |
getSetting(TechFactory.Param param)
|
protected void |
getShapeOfArc(AbstractShapeBuilder b,
ImmutableArcInst a)
Fill the polygons that describe arc "a". |
protected void |
getShapeOfArc(AbstractShapeBuilder b,
ImmutableArcInst a,
EGraphics graphicsOverride)
Fill the polygons that describe arc "a". |
Poly[] |
getShapeOfArc(ArcInst ai)
Returns the polygons that describe arc "ai". |
Poly[] |
getShapeOfArc(ArcInst ai,
Layer.Function.Set onlyTheseLayers)
Returns the polygons that describe arc "ai". |
protected Poly[] |
getShapeOfNode(CellBackup.Memoization m,
ImmutableNodeInst n,
boolean electrical,
boolean reasonable,
Technology.NodeLayer[] primLayers)
Returns the polygons that describe node "ni", given a set of NodeLayer objects to use. |
Poly[] |
getShapeOfNode(NodeInst ni)
Returns the polygons that describe node "ni". |
Poly[] |
getShapeOfNode(NodeInst ni,
boolean electrical,
boolean reasonable,
Layer.Function.Set onlyTheseLayers)
Returns the polygons that describe node "ni". |
Poly |
getShapeOfPort(NodeInst ni,
PrimitivePort pp)
Returns a polygon that describes a particular port on a NodeInst. |
Poly |
getShapeOfPort(NodeInst ni,
PrimitivePort pp,
java.awt.geom.Point2D selectPt)
Returns a polygon that describes a particular port on a NodeInst. |
Technology.SizeCorrector |
getSizeCorrector(Version version,
java.util.Map<Setting,java.lang.Object> projectSettings,
boolean isJelib,
boolean keepExtendOverMin)
|
double[] |
getSpacingDistances(Poly poly1,
Poly poly2)
This is the most basic function to determine the widest wire and the parallel distance that run along them. |
java.lang.String[] |
getSpiceHeaderLevel1()
Method to return the level-1 header cards for SPICE in this Technology. |
java.lang.String[] |
getSpiceHeaderLevel2()
Method to return the level-2 header cards for SPICE in this Technology. |
java.lang.String[] |
getSpiceHeaderLevel3()
Method to return the level-3 header cards for SPICE in this Technology. |
java.lang.String |
getTechDesc()
Returns the full description of this Technology. |
java.lang.String |
getTechName()
Returns the name of this technology. |
static java.util.Iterator<Technology> |
getTechnologies()
Get an iterator over all of the Technologies. |
java.lang.String |
getTechShortName()
Returns the short name of this technology. |
double |
getTransistorActiveLength(NodeInst ni)
Method to return length of active reqion. |
PortInst |
getTransistorAltGatePort(NodeInst ni)
Method to return the other gate PortInst for this transistor NodeInst. |
PortInst |
getTransistorBasePort(NodeInst ni)
Method to return a base PortInst for this transistor NodeInst. |
PortInst |
getTransistorBiasPort(NodeInst ni)
Method to return a bias PortInst for this transistor NodeInst. |
PortInst |
getTransistorCollectorPort(NodeInst ni)
Method to return a collector PortInst for this transistor NodeInst. |
PortInst |
getTransistorDrainPort(NodeInst ni)
Method to return a drain PortInst for this transistor NodeInst. |
PortInst |
getTransistorEmitterPort(NodeInst ni)
Method to return a emitter PortInst for this transistor NodeInst. |
PortInst |
getTransistorGatePort(NodeInst ni)
Method to return a gate PortInst for this transistor NodeInst. |
TransistorSize |
getTransistorSize(NodeInst ni,
VarContext context)
Method to return the size of a transistor NodeInst in this Technology. |
PortInst |
getTransistorSourcePort(NodeInst ni)
Method to return a source PortInst for this transistor NodeInst. |
java.awt.Color[] |
getTransparentLayerColors()
Method to return the colors for the transparent layers in this Technology. |
static Technology |
getTSMC180Technology()
Method to return the TSMC 180 nanometer technology. |
double |
getWireRatio()
Method to get the wire capacitance ratio for Logical Effort. |
Setting |
getWireRatioSetting()
Returns project preferences to tell the wire capacitance ratio for Logical Effort. |
Xml.Technology |
getXmlTech()
|
static void |
initAllTechnologies(EDatabase database,
java.util.Map<java.lang.String,java.lang.Object> paramValuesByXmlPath,
java.lang.String softTechnologies)
This is called once, at the start of Electric, to initialize the technologies. |
boolean |
isEasyShape(ImmutableArcInst a,
boolean explain)
Tells if arc can be drawn by simplified algorithm Overidden ins subclasses |
boolean |
isEasyShape(NodeInst ni,
boolean explain)
Tells if node can be drawn by simplified algorithm Overidden in subclasses |
boolean |
isGateIncluded()
Returns true if gate is included in resistance calculation. |
boolean |
isGroundNetIncluded()
Returns true if ground network is included in parasitics calculation. |
boolean |
isLayout()
Returns true if this Technology is a layout technology. |
boolean |
isMultiCutCase(NodeInst ni)
Method to decide whether a NodeInst is a multi-cut contact. |
boolean |
isMultiCutInTechnology(Technology.MultiCutData mcd)
Method to determine if cut case is considered multi cut It gets overridden by CMOS90 |
boolean |
isNoDirectionalArcs()
Returns true if this technology does not have directional arcs. |
boolean |
isNoNegatedArcs()
Returns true if this technology does not have negated arcs. |
boolean |
isNonElectrical()
Returns true if this technology is "non-electrical". |
boolean |
isNonStandard()
Returns true if this technology is non-standard. |
boolean |
isNoPrimitiveNodes()
Returns true if this technology has no primitives. |
boolean |
isScaleRelevant()
Method to tell whether scaling is relevant for this Technology. |
boolean |
isSchematics()
Returns true if this Technology is a schematics technology. |
boolean |
isStaticTechnology()
Returns true if this technoology is "static" (cannot be deleted). |
boolean |
isUniversalConnectivityPort(PrimitivePort pp)
Tells if all ArcProtos can connect to the PrimitivePort |
boolean |
isValidVTPolyRule(DRCTemplate theRule)
Method to determine if the rule name matches an existing VT Poly rule |
boolean |
isXmlTechAvailable()
|
protected void |
loadFactoryMenuPalette(java.net.URL menuURL)
FOR GUI |
Setting |
makeBooleanSetting(java.lang.String name,
java.lang.String location,
java.lang.String description,
java.lang.String xmlName,
boolean factory)
|
Setting |
makeDoubleSetting(java.lang.String name,
java.lang.String location,
java.lang.String description,
java.lang.String xmlName,
double factory)
|
protected XMLRules |
makeFactoryDesignRules()
Method to get the factory design rules. |
static Environment |
makeInitialEnvironment()
|
Setting |
makeIntSetting(java.lang.String name,
java.lang.String location,
java.lang.String description,
java.lang.String xmlName,
int factory,
java.lang.String... trueMeaning)
|
Setting |
makeStringSetting(java.lang.String name,
java.lang.String location,
java.lang.String description,
java.lang.String xmlName,
java.lang.String factory)
|
Xml.Technology |
makeXml()
Create Xml structure of this Technology |
protected ArcProto |
newArcProto(java.lang.String protoName,
double lambdaWidthOffset,
double defaultWidth,
ArcProto.Function function,
Technology.ArcLayer... layers)
Method to create a new ArcProto from the parameters. |
protected void |
newFoundry(Foundry.Type mode,
java.net.URL fileURL,
java.lang.String... gdsLayers)
Method to create a new on this technology. |
Xml.MenuPalette |
parseComponentMenuXML(java.lang.String nodeGroupXML)
Oarses Xml string with component menu definition for this technology |
protected static void |
printlnBits(java.io.PrintWriter out,
java.lang.String[] bitNames,
int bits)
|
protected static void |
printlnSetting(java.io.PrintWriter out,
java.util.Map<Setting,java.lang.Object> settings,
Setting setting)
|
boolean |
sameLayer(Layer layer1,
Layer layer2)
Method to tell whether two layers should be considered equivalent for the purposes of cropping. |
protected void |
setArcCorrection(Technology.SizeCorrector sc,
java.lang.String arcName,
double lambdaBaseWidth)
|
void |
setCachedRules(XMLRules rules)
Method to set cached rules |
void |
setColorMapFromLayers(java.awt.Color[] layers)
Sets the color map from transparent layers in this technology. |
void |
setDefaultOutline(NodeInst ni)
Method to set default outline information on a NodeInst. |
protected void |
setFactoryLESettings(double gateCapacitance,
double wireRation,
double diffAlpha)
|
void |
setFactoryParasitics(double minResistance,
double minCapacitance)
Method to set default parasitic values on this Technology. |
protected void |
setFactoryResolution(double factory)
Method to set Technology resolution in IO/DRC tools. |
protected void |
setFactoryScale(double factory,
boolean scaleRelevant)
Sets the factory scale of this technology. |
protected void |
setFactoryTransparentLayers(java.awt.Color[] layers)
Sets the color map for transparent layers in this technology. |
protected void |
setNoDirectionalArcs()
Sets the technology to have no directional arcs. |
protected void |
setNoNegatedArcs()
Sets the technology to have no negated arcs. |
protected void |
setNonElectrical()
Sets the technology to be "non-electrical". |
protected void |
setNonStandard()
Sets the technology to be non-standard. |
void |
setNoPrimitiveNodes()
Sets the technology to have no primitives. |
protected void |
setNotUsed(int numPolys)
|
void |
setPrimitiveFunction(NodeInst ni,
PrimitiveNode.Function function)
Method to set the pure "NodeProto Function" for a primitive NodeInst in this Technology. |
void |
setPrimitiveNodeSize(NodeInst ni,
double width,
double length)
Method to set the size of a transistor NodeInst in this Technology. |
void |
setRuleVariables(DRCRules newRules)
Method to be called from DRC:setRules |
void |
setSpiceHeaderLevel1(java.lang.String[] lines)
Method to set the level-1 header cards for SPICE in this Technology. |
void |
setSpiceHeaderLevel2(java.lang.String[] lines)
Method to set the level-2 header cards for SPICE in this Technology. |
void |
setSpiceHeaderLevel3(java.lang.String[] lines)
Method to set the level-3 header cards for SPICE in this Technology. |
protected void |
setStaticTechnology()
Sets the technology to be "static". |
void |
setTechDesc(java.lang.String techDesc)
Sets the full description of this Technology. |
void |
setTechName(java.lang.String techName)
Sets the name of this technology. |
protected void |
setTechShortName(java.lang.String techShortName)
Sets the short name of this technology. |
void |
setup()
Method to initialize a technology. |
java.lang.String |
toString()
Returns a printable version of this Technology. |
static Technology |
whatTechnology(NodeProto cell)
Method to determine the appropriate Technology to use for a Cell. |
static Technology |
whatTechnology(NodeProto cellOrPrim,
NodeProto[] nodeProtoList,
int startNodeProto,
int endNodeProto,
ArcProto[] arcProtoList)
Method to determine the appropriate technology to use for a cell. |
Technology.State |
withState(java.util.Map<TechFactory.Param,java.lang.Object> paramValues)
Method to set state of a technology. |
protected java.lang.Object |
writeReplace()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected static final boolean ALWAYS_SKIP_WIPED_PINS
public static final boolean IMMUTABLE_TECHS
public static final Version DISK_VERSION_1
public static final Version DISK_VERSION_2
public static final Technology[] NULL_ARRAY
public static final ImmutableArrayList<Technology> EMPTY_LIST
public static final Variable.Key TRANS_CONTACT
public static final java.lang.String TECH_NODE
public static final java.lang.String SPECIALMENUCELL
public static final java.lang.String SPECIALMENUMISC
public static final java.lang.String SPECIALMENUPURE
public static final java.lang.String SPECIALMENUSPICE
public static final java.lang.String SPECIALMENUEXPORT
public static final java.lang.String SPECIALMENUTEXT
public static final java.lang.String SPECIALMENUHIGH
public static final java.lang.String SPECIALMENUPORT
public static final java.lang.String SPECIALMENUSEPARATOR
protected final java.util.HashMap<java.lang.String,PrimitiveNode> oldNodeNames
protected final java.util.HashMap<java.lang.String,ArcProto> oldArcNames
protected final java.util.List<Foundry> foundries
protected java.lang.String paramFoundry
protected java.lang.Integer paramNumMetalLayers
public static final int N_TYPE
public static final int P_TYPE
protected XMLRules factoryRules
protected XMLRules cachedRules
protected final TechFactory techFactory
protected Xml.Technology xmlTech
protected Xml.MenuPalette factoryMenuPalette
public static final com.sun.electric.technology.Technology.LayerHeight LAYERS_BY_HEIGHT
public static final com.sun.electric.technology.Technology.LayerHeight LAYERS_BY_HEIGHT_LIFT_CONTACTS
Constructor Detail |
---|
protected Technology(Generic generic, TechFactory techFactory)
Technology
.
This should not be called directly, but instead is invoked through each subclass's factory.
protected Technology(Generic generic, TechFactory techFactory, Foundry.Type defaultFoundry, int defaultNumMetals)
Technology
.
This should not be called directly, but instead is invoked through each subclass's factory.
protected Technology(Generic generic, TechFactory techFactory, java.util.Map<TechFactory.Param,java.lang.Object> techParams, Foundry.Type defaultFoundry, int defaultNumMetals)
Technology
.
This should not be called directly, but instead is invoked through each subclass's factory.
protected Technology(IdManager idManager, Generic generic, TechFactory techFactory, java.util.Map<TechFactory.Param,java.lang.Object> techParams, Foundry.Type defaultFoundry, int defaultNumMetals)
Technology
.
This should not be called directly, but instead is invoked through each subclass's factory.
public Technology(Generic generic, TechFactory techFactory, java.util.Map<TechFactory.Param,java.lang.Object> techParams, Xml.Technology t)
Method Detail |
---|
public Technology.SizeCorrector getSizeCorrector(Version version, java.util.Map<Setting,java.lang.Object> projectSettings, boolean isJelib, boolean keepExtendOverMin)
protected void setArcCorrection(Technology.SizeCorrector sc, java.lang.String arcName, double lambdaBaseWidth)
protected java.lang.Object writeReplace()
public boolean isXmlTechAvailable()
public Xml.Technology getXmlTech()
public static Environment makeInitialEnvironment()
public static java.util.Map<java.lang.String,java.lang.Object> getParamValuesByXmlPath()
public static void initAllTechnologies(EDatabase database, java.util.Map<java.lang.String,java.lang.Object> paramValuesByXmlPath, java.lang.String softTechnologies)
public static Technology getMocmosTechnology()
public static Technology getTSMC180Technology()
public static Technology getCMOS90Technology()
public void setup()
public Technology.State withState(java.util.Map<TechFactory.Param,java.lang.Object> paramValues)
public Technology.State getCurrentState()
protected void copyState(Technology that)
protected void setNotUsed(int numPolys)
public static Technology getCurrent()
public static Technology findTechnology(java.lang.String name)
name
- the name of the desired Technology
public static Technology findTechnology(TechId techId)
techId
- the TechId of the desired Technology
public static java.util.Iterator<Technology> getTechnologies()
public java.util.Map<Setting,java.lang.Object> convertOldVariable(java.lang.String varName, java.lang.Object value)
varName
- name of variablevalue
- value of variable
public boolean cleanUnusedNodesInLibrary(NodeInst ni, java.util.List<Geometric> list)
ni
- NodeInst node to analyzelist
- nodes that will be removed in a remove job.
public void dump(java.io.PrintWriter out, java.util.Map<Setting,java.lang.Object> settings)
protected void dumpExtraProjectSettings(java.io.PrintWriter out, java.util.Map<Setting,java.lang.Object> settings)
protected static void printlnSetting(java.io.PrintWriter out, java.util.Map<Setting,java.lang.Object> settings, Setting setting)
protected static void printlnBits(java.io.PrintWriter out, java.lang.String[] bitNames, int bits)
public Xml.Technology makeXml()
public java.util.Iterator<Layer> getLayers()
public Layer getLayer(LayerId layerId)
layerId
- the Id of the Layer.
public Layer getLayer(int index)
index
- the index of the desired Layer.
public int getNumLayers()
public Layer findLayer(java.lang.String layerName)
layerName
- the name of the desired Layer.
public int getRuleNodeIndex(java.lang.String name)
name
- name of the layer or node
public static Layer getLayerFromOverride(java.lang.String override, int startPos, char endChr, Technology tech)
public Layer findLayerFromFunction(Layer.Function fun, int functionExtras)
fun
- the layer function to locate.functionExtras
-
public void addLayer(Layer layer)
layer
- the Layer to be added to this Technology.public boolean sameLayer(Layer layer1, Layer layer2)
layer1
- the first Layer.layer2
- the second Layer.
public java.util.List<Layer> getLayersSortedByHeight()
public java.util.List<Layer> getLayersSortedByName()
public int getNumMetals()
public Setting getNumMetalsSetting()
protected ArcProto newArcProto(java.lang.String protoName, double lambdaWidthOffset, double defaultWidth, ArcProto.Function function, Technology.ArcLayer... layers)
protoName
- the name of this ArcProto.
It may not have unprintable characters, spaces, or tabs in it.lambdaWidthOffset
- width offset in lambda units.defaultWidth
- the default width of this ArcProto.layers
- the Layers that make up this ArcProto.
public ArcProto findArcProto(java.lang.String name)
name
- the name of the ArcProto.
public ArcProto getArcProto(ArcProtoId arcProtoId)
arcProtoId
- the Id of the ArcProto.
public java.util.Iterator<ArcProto> getArcs()
public java.util.Collection<ArcProto> getArcsCollection()
public int getNumArcs()
public void addArcProto(ArcProto ap)
ap
- the ArcProto to be added to this Technology.protected void setNoDirectionalArcs()
public boolean isNoDirectionalArcs()
protected void setNoNegatedArcs()
public boolean isNoNegatedArcs()
public Poly[] getShapeOfArc(ArcInst ai)
ai
- the ArcInst that is being described.
public Poly[] getShapeOfArc(ArcInst ai, Layer.Function.Set onlyTheseLayers)
ai
- the ArcInst that is being described.onlyTheseLayers
- to filter the only required layers
protected void getShapeOfArc(AbstractShapeBuilder b, ImmutableArcInst a)
b
- AbstractShapeBuilder to fill polygons.a
- the ImmutableArcInst that is being described.protected void getShapeOfArc(AbstractShapeBuilder b, ImmutableArcInst a, EGraphics graphicsOverride)
b
- AbstractShapeBuilder to fill polygons.a
- the ImmutableArcInst that is being described.graphicsOverride
- the graphics to use for all generated polygons (if not null).public boolean isEasyShape(ImmutableArcInst a, boolean explain)
a
- arc to testexplain
- if true then print explanation why arc is not easy
public ArcProto convertOldArcName(java.lang.String name)
name
- the unknown arc name, read from an old Library.
public java.util.Map<java.lang.String,ArcProto> getOldArcNames()
public java.util.List<PrimitiveNode> getNodesSortedByName()
public PrimitiveNode findNodeProto(java.lang.String name)
name
- the name of the PrimitiveNode.
public PrimitiveNode getPrimitiveNode(PrimitiveNodeId primitiveNodeId)
primitiveNodeId
- the Id of the PrimitiveNode.
public java.util.Iterator<PrimitiveNode> getNodes()
public java.util.Collection<PrimitiveNode> getNodesCollection()
public int getNumNodes()
public void addNodeProto(PrimitiveNode np)
np
- the PrimitiveNode to be added to this Technology.public PrimitiveNode.Function getPrimitiveFunction(PrimitiveNode pn, int techBits)
pn
- PrimitiveNode to check.techBits
- tech bits
public PrimitiveNodeSize getResistorSize(NodeInst ni, VarContext context)
ni
- the NodeInst.context
- the VarContext in which any vars will be evaluated,
pass in VarContext.globalContext if no context needed, or set to null
to avoid evaluation of variables (if any).
public double getTransistorActiveLength(NodeInst ni)
ni
- the NodeInst.
public TransistorSize getTransistorSize(NodeInst ni, VarContext context)
ni
- the NodeInst.context
- the VarContext in which any vars will be evaluated,
pass in VarContext.globalContext if no context needed, or set to null
to avoid evaluation of variables (if any).
public void setPrimitiveNodeSize(NodeInst ni, double width, double length)
ni
- the NodeInstwidth
- the new width (positive values only)length
- the new length (positive values only)public PortInst getTransistorGatePort(NodeInst ni)
ni
- the NodeInst
public PortInst getTransistorAltGatePort(NodeInst ni)
ni
- the NodeInst
public PortInst getTransistorBasePort(NodeInst ni)
ni
- the NodeInst
public PortInst getTransistorSourcePort(NodeInst ni)
ni
- the NodeInst
public PortInst getTransistorEmitterPort(NodeInst ni)
ni
- the NodeInst
public PortInst getTransistorDrainPort(NodeInst ni)
ni
- the NodeInst
public PortInst getTransistorCollectorPort(NodeInst ni)
ni
- the NodeInst
public PortInst getTransistorBiasPort(NodeInst ni)
ni
- the NodeInst
public void setPrimitiveFunction(NodeInst ni, PrimitiveNode.Function function)
ni
- the NodeInst to check.function
- the PrimitiveNode.Function to set on the NodeInst.public void setNoPrimitiveNodes()
public boolean isNoPrimitiveNodes()
public void setDefaultOutline(NodeInst ni)
ni
- the NodeInst to load with default outline information.public ERectangle getNodeInstBaseRectangle(NodeInst ni)
ni
- the NodeInst to query.
public Poly[] getShapeOfNode(NodeInst ni)
ni
- the NodeInst that is being described.
The prototype of this NodeInst must be a PrimitiveNode and not a Cell.
public Poly[] getShapeOfNode(NodeInst ni, boolean electrical, boolean reasonable, Layer.Function.Set onlyTheseLayers)
ni
- the NodeInst that is being described.
The prototype of this NodeInst must be a PrimitiveNode and not a Cell.electrical
- true to get the "electrical" layers.
When electrical layers are requested, each layer is tied to a specific port on the node.
If any piece of geometry covers more than one port,
it must be split for the purposes of an "electrical" description.
For example, the MOS transistor has 2 layers: Active and Poly.
But it has 3 electrical layers: Active, Active, and Poly.
The active must be split since each half corresponds to a different PrimitivePort on the PrimitiveNode.reasonable
- true to get only a minimal set of contact cuts in large contacts.
The minimal set covers all edge contacts, but ignores the inner cuts in large contacts.onlyTheseLayers
- a set of layers to draw (if null, draw all layers).
public boolean isEasyShape(NodeInst ni, boolean explain)
ni
- node to testexplain
- if true then print explanation why arc is not easy
protected Poly[] getShapeOfNode(CellBackup.Memoization m, ImmutableNodeInst n, boolean electrical, boolean reasonable, Technology.NodeLayer[] primLayers)
m
- information about including cell which is necessary for computingn
- the ImmutableNodeInst that is being described.electrical
- true to get the "electrical" layers
Like the list returned by "getLayers", the results describe this PrimitiveNode,
but each layer is tied to a specific port on the node.
If any piece of geometry covers more than one port,
it must be split for the purposes of an "electrical" description.reasonable
- true to get only a minimal set of contact cuts in large contacts.
The minimal set covers all edge contacts, but ignores the inner cuts in large contacts.primLayers
- an array of NodeLayer objects to convert to Poly objects.
The prototype of this NodeInst must be a PrimitiveNode and not a Cell.
protected void genShapeOfNode(AbstractShapeBuilder b, ImmutableNodeInst n, PrimitiveNode pn, Technology.NodeLayer[] primLayers)
b
- shape builder where to put polygonsn
- the ImmutableNodeInst that is being described.pn
- proto of the ImmutableNodeInst in this TechnologyprimLayers
- an array of NodeLayer objects to convert to Poly objects.
The prototype of this NodeInst must be a PrimitiveNode and not a Cell.protected Poly[] computeShapeOfNode(CellBackup.Memoization m, ImmutableNodeInst n, boolean electrical, boolean reasonable, Technology.NodeLayer[] primLayers, EGraphics graphicsOverride)
m
- information about including cell which is necessary for computingn
- the ImmutableNodeInst that is being described.electrical
- true to get the "electrical" layers
Like the list returned by "getLayers", the results describe this PrimitiveNode,
but each layer is tied to a specific port on the node.
If any piece of geometry covers more than one port,
it must be split for the purposes of an "electrical" description.reasonable
- true to get only a minimal set of contact cuts in large contacts.
The minimal set covers all edge contacts, but ignores the inner cuts in large contacts.primLayers
- an array of NodeLayer objects to convert to Poly objects.graphicsOverride
- the graphics override to use for all generated polygons (if not null).
The prototype of this NodeInst must be a PrimitiveNode and not a Cell.
public boolean isMultiCutInTechnology(Technology.MultiCutData mcd)
public Technology.MultiCutData getMultiCutData(NodeInst ni)
ni
- the NodeInst being tested.
public boolean isMultiCutCase(NodeInst ni)
ni
- the NodeInst being tested.
public PrimitiveNode convertOldNodeName(java.lang.String name)
name
- the unknown node name, read from an old Library.
public java.util.Map<java.lang.String,PrimitiveNode> getOldNodeNames()
public Poly getShapeOfPort(NodeInst ni, PrimitivePort pp)
ni
- the NodeInst that has the port of interest.
The prototype of this NodeInst must be a PrimitiveNode and not a Cell.pp
- the PrimitivePort on that NodeInst that is being described.
public Poly getShapeOfPort(NodeInst ni, PrimitivePort pp, java.awt.geom.Point2D selectPt)
ni
- the NodeInst that has the port of interest.
The prototype of this NodeInst must be a PrimitiveNode and not a Cell.pp
- the PrimitivePort on that NodeInst that is being described.selectPt
- if not null, it requests a new location on the port,
away from existing arcs, and close to this point.
This is useful for "area" ports such as the left side of AND and OR gates.
public PrimitivePort convertOldPortName(java.lang.String portName, PrimitiveNode np)
portName
- the unknown port name, read from an old Library.np
- the PrimitiveNode on which this port resides.
public boolean isUniversalConnectivityPort(PrimitivePort pp)
pp
- PrimitivePort to test
public double getMinResistance()
public Setting getMinResistanceSetting()
public double getMinCapacitance()
public Setting getMinCapacitanceSetting()
public double getMaxSeriesResistance()
public Setting getMaxSeriesResistanceSetting()
public boolean isGateIncluded()
public Setting getGateIncludedSetting()
public boolean isGroundNetIncluded()
public Setting getGroundNetIncludedSetting()
public double getGateLengthSubtraction()
public Setting getGateLengthSubtractionSetting()
public void setFactoryParasitics(double minResistance, double minCapacitance)
minResistance
- the minimum resistance in this Technology.minCapacitance
- the minimum capacitance in this Technology.protected void setFactoryLESettings(double gateCapacitance, double wireRation, double diffAlpha)
public double getGateCapacitance()
public Setting getGateCapacitanceSetting()
public double getWireRatio()
public Setting getWireRatioSetting()
public double getDiffAlpha()
public Setting getDiffAlphaSetting()
public java.lang.String[] getSpiceHeaderLevel1()
public void setSpiceHeaderLevel1(java.lang.String[] lines)
lines
- the level-1 header cards for SPICE in this Technology.public java.lang.String[] getSpiceHeaderLevel2()
public void setSpiceHeaderLevel2(java.lang.String[] lines)
lines
- the level-2 header cards for SPICE in this Technology.public java.lang.String[] getSpiceHeaderLevel3()
public void setSpiceHeaderLevel3(java.lang.String[] lines)
lines
- the level-3 header cards for SPICE in this Technology.protected void setNonElectrical()
public boolean isNonElectrical()
protected void setNonStandard()
public boolean isNonStandard()
protected void setStaticTechnology()
public boolean isStaticTechnology()
public TechId getId()
public java.lang.String getTechName()
public void setTechName(java.lang.String techName)
public java.lang.String getTechShortName()
protected void setTechShortName(java.lang.String techShortName)
techShortName
- the short name for this technology.public java.lang.String getTechDesc()
public void setTechDesc(java.lang.String techDesc)
public double getScale()
public java.lang.String getScaleVariableName()
protected void setFactoryScale(double factory, boolean scaleRelevant)
factory
- the factory scale between this technology and the real units.scaleRelevant
- true if this is a layout technology, and the scale factor has meaning.public Setting getScaleSetting()
public boolean isScaleRelevant()
protected void setFactoryResolution(double factory)
factory
- factory valuepublic double getFactoryResolution()
public java.lang.String getPrefFoundry()
public Setting getPrefFoundrySetting()
protected Foundry findFoundry(java.lang.String name)
name
- the name of the desired Foundry.
public java.util.Iterator<Foundry> getFoundries()
protected void newFoundry(Foundry.Type mode, java.net.URL fileURL, java.lang.String... gdsLayers)
mode
- factory typefileURL
- URL of xml file with description of rulesgdsLayers
- stirngs with definition of gds numbers for layerspublic Foundry getSelectedFoundry()
public java.util.Map<Layer,java.lang.String> getGDSLayers()
protected void setFactoryTransparentLayers(java.awt.Color[] layers)
layers
- is an array of colors, one per transparent layer.
This is expanded to a map that is 2 to the power "getNumTransparentLayers()".
Color merging is computed automatically.public java.awt.Color[] getFactoryTransparentLayerColors()
public java.awt.Color[] getTransparentLayerColors()
public int getNumTransparentLayers()
public void setColorMapFromLayers(java.awt.Color[] layers)
layers
- an array of colors, one per transparent layer.
This is expanded to a map that is 2 to the power "getNumTransparentLayers()".
Color merging is computed automatically.public XMLRules getFactoryDesignRules()
protected XMLRules makeFactoryDesignRules()
public static java.lang.StringBuffer getRuleDifferences(DRCRules origRules, DRCRules newRules)
origRules
- newRules
-
public void setRuleVariables(DRCRules newRules)
newRules
- public java.awt.Color[] getColorMap()
public static Technology whatTechnology(NodeProto cell)
cell
- the Cell to examine.
public static Technology whatTechnology(NodeProto cellOrPrim, NodeProto[] nodeProtoList, int startNodeProto, int endNodeProto, ArcProto[] arcProtoList)
cellOrPrim
- the Cell to examine.nodeProtoList
- the list of prototypes of NodeInsts in the Cell.startNodeProto
- the starting point in the "nodeProtoList" array.endNodeProto
- the ending point in the "nodeProtoList" array.arcProtoList
- the list of prototypes of ArcInsts in the Cell.
public boolean isLayout()
public boolean isSchematics()
public int compareTo(Technology that)
compareTo
in interface java.lang.Comparable<Technology>
that
- the other Technology.
public java.lang.String toString()
toString
in class java.lang.Object
public java.util.List<NodeProto> getMetalContactCluster(Layer l1, Layer l2)
protected void loadFactoryMenuPalette(java.net.URL menuURL)
public Xml.MenuPalette parseComponentMenuXML(java.lang.String nodeGroupXML)
nodeGroupXML
- Xml string with component menu definitionpublic Xml.MenuPalette getFactoryMenuPalette()
public double[] getSpacingDistances(Poly poly1, Poly poly2)
public XMLRules getCachedRules()
public void setCachedRules(XMLRules rules)
public boolean isValidVTPolyRule(DRCTemplate theRule)
theRule
-
public Setting makeBooleanSetting(java.lang.String name, java.lang.String location, java.lang.String description, java.lang.String xmlName, boolean factory)
public Setting makeIntSetting(java.lang.String name, java.lang.String location, java.lang.String description, java.lang.String xmlName, int factory, java.lang.String... trueMeaning)
public Setting makeDoubleSetting(java.lang.String name, java.lang.String location, java.lang.String description, java.lang.String xmlName, double factory)
public Setting makeStringSetting(java.lang.String name, java.lang.String location, java.lang.String description, java.lang.String xmlName, java.lang.String factory)
public Setting.Group getProjectSettings()
public Setting.RootGroup getProjectSettingsRoot()
public Setting getSetting(java.lang.String xmlPath)
public Setting getSetting(TechFactory.Param param)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |