|
||||||||||
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.Distance
|
static interface |
Technology.DistanceContext
|
static class |
Technology.DistanceRule
|
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
|
static class |
Technology.TechPoint
Defines a point in space that is relative to a NodeInst's bounds. |
static class |
Technology.TechSetting
Class to extend prefs so that changes to MOSIS CMOS options will update the display. |
Field Summary | |
---|---|
protected DRCRules |
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 Technology.DistanceContext |
EMPTY_CONTEXT
|
static ImmutableArrayList<Technology> |
EMPTY_LIST
|
protected java.lang.Object[][] |
factoryNodeGroups
Default element groups for the component menu |
protected java.util.List<Foundry> |
foundries
static list of all Manufacturers in Electric |
static com.sun.electric.technology.Technology.LayerHeight |
LAYERS_BY_HEIGHT
|
static com.sun.electric.technology.Technology.LayerHeight |
LAYERS_BY_HEIGHT_LIFT_CONTACTS
|
static com.sun.electric.technology.Technology.LayerZValueSorting |
LAYERS_BY_ZVALUE
|
static int |
N_TYPE
indicates n-type objects. |
protected java.lang.Object[][] |
nodeGroups
To group elements for the component menu |
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. |
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 |
SPECIALMENUSPICE
|
static java.lang.String |
SPECIALMENUTEXT
|
protected static Artwork |
sysArtwork
|
protected static FPGA |
sysFPGA
|
protected static Generic |
sysGeneric
|
protected static Schematics |
sysSchematics
|
static Variable.Key |
TECH_TMPVAR
Temporary variable for holding names |
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,
java.lang.String techName)
Constructs a Technology . |
protected |
Technology(Generic generic,
java.lang.String techName,
Foundry.Type defaultFoundry,
int defaultNumMetals)
Constructs a Technology . |
|
Technology(Generic generic,
Xml.Technology t)
|
protected |
Technology(IdManager idManager,
Generic generic,
java.lang.String techName,
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. |
static void |
cacheTransparentLayerColors()
Method to reload the color map when the layer color preferences have changed. |
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(NodeInst ni,
boolean electrical,
boolean reasonable,
Technology.NodeLayer[] primLayers,
Layer layerOverride)
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. |
void |
dump(java.io.PrintWriter out)
|
protected void |
dumpExtraProjectSettings(java.io.PrintWriter out)
|
java.lang.Object[][] |
filterNodeGroups(java.lang.Object[][] oldNG)
Method to remove component menu entries that are impossible because of inaccessible objects. |
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)
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. |
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 |
DRCRules |
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 java.awt.Color[] |
getColorMap(java.awt.Color[] layers,
int numLayers)
|
static Technology |
getCurrent()
Returns the current Technology. |
java.lang.Object[][] |
getDefaultNodesGrouped()
Method to construct a default group of elements for the palette. |
double |
getDiffAlpha()
Method to get the diffusion to gate capacitance ratio for Logical Effort. |
Setting |
getDiffAlphaSetting()
Returns project Setting to tell the diffusion to gate capacitance ratio for Logical Effort. |
java.awt.Color[] |
getFactoryColorMap()
|
XMLRules |
getFactoryDesignRules()
Method to get the factory design rules. |
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 Setting to tell the Gate Capacitance for Logical Effort. |
Setting |
getGateIncludedSetting()
Returns project Setting to tell gate inclusion. |
double |
getGateLengthSubtraction()
Gets the gate length subtraction for this Technology (in microns). |
Setting |
getGateLengthSubtractionSetting()
Returns project Setting 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 Setting to tell ground network inclusion. |
TechId |
getId()
Returns the TechId of this technology. |
int |
getIndex()
Returns the 0-based index of this Technology. |
Layer |
getLayer(int index)
Returns a specific Layer number in this Technology. |
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> |
getLayersSortedByZValue()
Method to make a sorted list of layers in this Technology based on their Z value, a preference stored per layer. |
double |
getMaxSeriesResistance()
Get the maximum series resistance for layout extraction for this Technology. |
Setting |
getMaxSeriesResistanceSetting()
Returns project Setting to tell the maximum series resistance for layout extraction for this Technology. |
double |
getMinCapacitance()
Returns the minimum capacitance of this Technology. |
Setting |
getMinCapacitanceSetting()
Returns project Setting to tell the minimum capacitance of this Technology. |
double |
getMinResistance()
Returns the minimum resistance of this Technology. |
Setting |
getMinResistanceSetting()
Returns project Setting 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.lang.Object[][] |
getNodesGrouped(Cell curCell)
Method to retrieve correct group of elements for the palette. |
java.lang.String |
getNodesGroupedXML()
Method to get the group of elements for the component menu. |
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 Setting 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()
|
void |
getPrefComponentMenu()
Method to see if there are component menu preferences. |
java.lang.String |
getPrefFoundry()
Method to get foundry in Tech Palette. |
Setting |
getPrefFoundrySetting()
Returns project Setting 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 |
ProjSettingsNode |
getProjectSettings()
|
PrimitiveNodeSize |
getResistorSize(NodeInst ni,
VarContext context)
Method to return the size of a resistor-type NodeInst in this Technology. |
double |
getResolution()
Method to retrieve the resolution associated to the technology. |
protected java.util.Map<java.lang.String,java.lang.String> |
getRuleAliases()
|
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 |
protected java.lang.String |
getRuleSuffix()
|
java.util.List<Layer> |
getSavedLayerOrder()
Method to return a list of layers that are saved for this Technology. |
double |
getScale()
Returns the scale for this Technology. |
Setting |
getScaleSetting()
Returns project Setting 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. |
protected void |
getShapeOfArc(AbstractShapeBuilder b,
ImmutableArcInst a)
Fill the polygons that describe arc "a". |
protected void |
getShapeOfArc(AbstractShapeBuilder b,
ImmutableArcInst a,
Layer layerOverride)
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". |
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". |
protected Poly[] |
getShapeOfNode(NodeInst ni,
boolean electrical,
boolean reasonable,
Technology.NodeLayer[] primLayers,
Layer layerOverride)
Returns the polygons that describe node "ni", given a set of NodeLayer objects to use. |
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)
|
static java.util.List<java.lang.String> |
getSoftTechnologies()
Method to get an array of additional technologies that should be added to Electric. |
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. |
static Pref.Group |
getTechnologyPreferences()
Method to return the Pref object associated with all 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. |
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 Setting to tell the wire capacitance ratio for Logical Effort. |
Xml.Technology |
getXmlTech()
|
static void |
initAllTechnologies()
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 |
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). |
protected 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 |
protected void |
make3d(Xml807.Technology t,
Xml807.RuleSet ruleSet)
|
static NodeInst |
makeNodeInst(NodeProto np)
Method to create temporary nodes for the palette |
static NodeInst |
makeNodeInst(NodeProto np,
PrimitiveNode.Function func,
int angle,
boolean display,
java.lang.String varName,
double fontSize)
Method to create temporary nodes for the palette |
protected void |
makeRuleSets(Xml807.Technology t)
|
Xml.Technology |
makeXml()
Create Xml structure of this Technology |
Xml807.Technology |
makeXml807()
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. |
protected static void |
printlnBits(java.io.PrintWriter out,
java.lang.String[] bitNames,
int bits)
|
protected static void |
printlnSetting(java.io.PrintWriter out,
Setting setting)
|
protected void |
resizeArcs(XMLRules rules)
|
protected void |
resizeXml(XMLRules rules)
|
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(DRCRules rules)
Method to set cached rules |
void |
setColorMap(java.awt.Color[] map)
Sets the color map for transparent layers in this technology. |
void |
setColorMapFromLayers(java.awt.Color[] layers)
Sets the color map from transparent layers in this technology. |
void |
setCurrent()
Set this to be the current Technology The current technology is maintained by the system as a default in situations where a technology cannot be determined. |
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. |
void |
setNodesGrouped(java.lang.Object[][] ng,
java.lang.String xml)
Method to change the group of elements for the component menu. |
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 |
setNumTransparentLayers(int nl)
Sets the number of transparent layers in this technology. |
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 |
setResolution(double resolution)
Method to set the technology resolution. |
void |
setRuleVariables(DRCRules newRules)
Method to be called from DRC:setRules |
void |
setSavedLayerOrder(java.util.List<Layer> layers)
Method to save a list of layers for this Technology in a preferred order. |
static void |
setSoftTechnologies(java.util.List<java.lang.String> a)
Method to set an array of additional technologies that should be added to Electric. |
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. |
void |
setState()
Method to set state of a 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(EDatabase database)
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. |
protected java.lang.Object |
writeReplace()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
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 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 Technology.DistanceContext EMPTY_CONTEXT
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.Object[][] nodeGroups
protected java.lang.Object[][] factoryNodeGroups
public static final int N_TYPE
public static final int P_TYPE
protected DRCRules cachedRules
protected Xml.Technology xmlTech
protected static Generic sysGeneric
protected static Artwork sysArtwork
protected static FPGA sysFPGA
protected static Schematics sysSchematics
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
public static final com.sun.electric.technology.Technology.LayerZValueSorting LAYERS_BY_ZVALUE
public static final Variable.Key TECH_TMPVAR
Constructor Detail |
---|
protected Technology(Generic generic, java.lang.String techName)
Technology
.
This should not be called directly, but instead is invoked through each subclass's factory.
protected Technology(Generic generic, java.lang.String techName, 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, java.lang.String techName, 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, 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 Xml.Technology getXmlTech()
protected void resizeXml(XMLRules rules)
public static void initAllTechnologies()
public static java.util.List<java.lang.String> getSoftTechnologies()
public static void setSoftTechnologies(java.util.List<java.lang.String> a)
a
- an array of additional technologies that should be added to Electric.public static Technology getMocmosTechnology()
public static Technology getTSMC180Technology()
public static Technology getCMOS90Technology()
public void setup(EDatabase database)
public void setState()
protected void setNotUsed(int numPolys)
public static Technology getCurrent()
public void setCurrent()
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)
protected void dumpExtraProjectSettings(java.io.PrintWriter out)
protected static void printlnSetting(java.io.PrintWriter out, Setting setting)
protected static void printlnBits(java.io.PrintWriter out, java.lang.String[] bitNames, int bits)
public Xml.Technology makeXml()
public Xml807.Technology makeXml807()
protected void makeRuleSets(Xml807.Technology t)
protected void make3d(Xml807.Technology t, Xml807.RuleSet ruleSet)
public java.util.Iterator<Layer> getLayers()
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)
fun
- the layer function to locate.
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> getLayersSortedByZValue()
public java.util.List<Layer> getSavedLayerOrder()
public void setSavedLayerOrder(java.util.List<Layer> layers)
layers
- a list of layers for this Technology in a preferred order.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, Layer layerOverride)
b
- AbstractShapeBuilder to fill polygons.a
- the ImmutableArcInst that is being described.layerOverride
- the layer 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).
protected Poly[] getShapeOfNode(NodeInst ni, boolean electrical, boolean reasonable, Technology.NodeLayer[] primLayers, Layer layerOverride)
ni
- the NodeInst 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.layerOverride
- the layer to use for all generated polygons (if not null).
The prototype of this NodeInst must be a PrimitiveNode and not a Cell.
protected Poly[] computeShapeOfNode(NodeInst ni, boolean electrical, boolean reasonable, Technology.NodeLayer[] primLayers, Layer layerOverride)
ni
- the NodeInst 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.layerOverride
- the layer 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.
protected boolean isUniversalConnectivityPort(PrimitivePort pp)
pp
- PrimitivePort to test
public static Pref.Group getTechnologyPreferences()
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 void setResolution(double resolution)
resolution
- new resolution value.public double getResolution()
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 static void cacheTransparentLayerColors()
public java.awt.Color[] getFactoryColorMap()
public int getNumTransparentLayers()
public void setNumTransparentLayers(int nl)
nl
- the number of transparent layers in this technology.public void setColorMap(java.awt.Color[] map)
map
- the color map for transparent layers in this technology.
There must be a number of entries in this map equal to 2 to the power "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 static java.awt.Color[] getColorMap(java.awt.Color[] layers, int numLayers)
public XMLRules getFactoryDesignRules()
protected void resizeArcs(XMLRules rules)
protected java.lang.String getRuleSuffix()
protected java.util.Map<java.lang.String,java.lang.String> getRuleAliases()
public static java.lang.StringBuffer getRuleDifferences(DRCRules origRules, DRCRules newRules)
origRules
- newRules
-
public void setRuleVariables(DRCRules newRules)
newRules
- public java.awt.Color[] getColorMap()
public int getIndex()
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 void setNodesGrouped(java.lang.Object[][] ng, java.lang.String xml)
ng
- the new set of objects to display in the component menu.xml
- the XML for the new component menu groupings.public java.lang.String getNodesGroupedXML()
public void getPrefComponentMenu()
public java.lang.Object[][] getDefaultNodesGrouped()
public java.lang.Object[][] getNodesGrouped(Cell curCell)
curCell
- the current cell being displayed (may affect the palette).
public java.lang.Object[][] filterNodeGroups(java.lang.Object[][] oldNG)
oldNG
- the old list of component menu entries.
public static NodeInst makeNodeInst(NodeProto np)
np
- prototype of the node to place in the palette.public static NodeInst makeNodeInst(NodeProto np, PrimitiveNode.Function func, int angle, boolean display, java.lang.String varName, double fontSize)
np
- prototype of the node to place in the palette.func
- function of the node (helps parameterize the node).angle
- initial placement angle of the node.public double[] getSpacingDistances(Poly poly1, Poly poly2)
public DRCRules getCachedRules()
public void setCachedRules(DRCRules rules)
public boolean isValidVTPolyRule(DRCTemplate theRule)
theRule
-
public ProjSettingsNode getProjectSettings()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |