com.sun.electric.technology.technologies
Class Schematics

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

public class Schematics
extends Technology

This is the Schematics technology.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class com.sun.electric.technology.Technology
Technology.ArcLayer, Technology.Distance, Technology.DistanceContext, Technology.DistanceRule, Technology.MultiCutData, Technology.NodeLayer, Technology.SizeCorrector, Technology.TechPoint, Technology.TechSetting
 
Field Summary
 PrimitiveNode andNode
          and
static Variable.Key ATTR_AREA
          key of Variable holding transistor area.
static Variable.Key ATTR_LENGTH
          key of Variable holding transistor length.
static Variable.Key ATTR_WIDTH
          key of Variable holding transistor width.
 PrimitiveNode bboxNode
          bbox
 PrimitiveNode bufferNode
          buffer
 ArcProto bus_arc
          bus arc
 PrimitiveNode busPinNode
          bus-pin
 PrimitiveNode capacitorNode
          capacitor
 PrimitiveNode diodeNode
          diode
 PrimitiveNode flipflopNode
          flipflop
 PrimitiveNode globalNode
          global
 PrimitiveNode globalPartitionNode
          global partition
 PrimitiveNode groundNode
          ground
 PrimitiveNode inductorNode
          inductor
 PrimitiveNode meterNode
          meter
 PrimitiveNode muxNode
          mux
 Layer node_lay
          the node layer
 PrimitiveNode offpageNode
          offpage
 PrimitiveNode orNode
          or
 PrimitiveNode powerNode
          power
 PrimitiveNode resistorNode
          resistor
static Variable.Key SCHEM_CAPACITANCE
          key of Variable holding capacitance.
static Variable.Key SCHEM_DIODE
          key of Variable holding diode area.
static Variable.Key SCHEM_FUNCTION
          key of Variable holding black-box function.
static Variable.Key SCHEM_GLOBAL_NAME
          key of Variable holding global signal name.
static Variable.Key SCHEM_INDUCTANCE
          key of Variable holding inductance.
static Variable.Key SCHEM_RESISTANCE
          key of Variable holding resistance.
 PrimitiveNode sourceNode
          source
 PrimitiveNode substrateNode
          substrate
 PrimitiveNode switchNode
          switch
 PrimitiveNode transistor4Node
          transistor-4
 PrimitiveNode transistorNode
          transistor
 PrimitiveNode twoportNode
          twoport
 PrimitiveNode wellNode
          well
 ArcProto wire_arc
          wire arc
 PrimitiveNode wireConNode
          wire-con
 PrimitiveNode wirePinNode
          wire-pin
 PrimitiveNode xorNode
          xor
 
Fields inherited from class com.sun.electric.technology.Technology
cachedRules, DISK_VERSION_1, DISK_VERSION_2, DUPLICATEPOINTSAREBROKENOUTLINES, EMPTY_CONTEXT, EMPTY_LIST, factoryNodeGroups, factoryRules, foundries, HANDLEBROKENOUTLINES, LAYERS_BY_HEIGHT, LAYERS_BY_HEIGHT_LIFT_CONTACTS, N_TYPE, nodeGroups, NULL_ARRAY, oldArcNames, oldNodeNames, P_TYPE, SPECIALMENUCELL, SPECIALMENUEXPORT, SPECIALMENUHIGH, SPECIALMENUMISC, SPECIALMENUPORT, SPECIALMENUPURE, SPECIALMENUSPICE, SPECIALMENUTEXT, sysArtwork, sysFPGA, sysGeneric, sysSchematics, TECH_TMPVAR, TRANS_CONTACT, xmlTech
 
Constructor Summary
Schematics(Generic generic)
           
 
Method Summary
 PrimitivePort convertOldPortName(java.lang.String portName, PrimitiveNode np)
          Method to convert old primitive port names to their proper PortProtos.
 java.lang.Object[][] getDefaultNodesGrouped()
          Method to construct a default group of elements for the palette.
static Technology getDefaultSchematicTechnology()
          Method to determine the default schematic technology.
 double getFactoryNegatingBubbleSize()
          Method to tell the size of negating bubbles, by default.
 java.lang.String getFactoryVHDLNames(PrimitiveNode np)
          Method to tell the VHDL names for a primitive in this technology, by default.
 double getNegatingBubbleSize()
          Method to tell the size of negating bubbles.
 ERectangle getNodeInstBaseRectangle(NodeInst ni)
          Method to get the base (highlight) ERectangle associated with a NodeInst in this PrimitiveNode.
 PrimitiveNode.Function getPrimitiveFunction(PrimitiveNode pn, int techBits)
          Method to return the pure "PrimitiveNode Function" a primitive NodeInst in this Technology.
static int getPrimitiveFunctionBits(PrimitiveNode.Function function)
          Method to return the technology-specific function bits for a given PrimitiveNode.Function.
 PrimitiveNodeSize getResistorSize(NodeInst ni, VarContext context)
          Method to return the size of a resistor-type NodeInst in this Technology.
protected  Poly[] getShapeOfNode(NodeInst ni, boolean electrical, boolean reasonable, Technology.NodeLayer[] primLayers, Layer layerOverride)
          Method to return a list of Polys that describe a given NodeInst.
 Poly getShapeOfPort(NodeInst ni, PrimitivePort pp, java.awt.geom.Point2D selectPt)
          Returns a polygon that describes a particular port on a NodeInst.
 PortInst getTransistorDrainPort(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.
 java.lang.String getVHDLNames(PrimitiveNode np)
          Method to tell the VHDL names for a primitive in this technology.
 void setNegatingBubbleSize(double s)
          Method to set the size of negating bubbles.
 void setPrimitiveFunction(NodeInst ni, PrimitiveNode.Function function)
          Method to set the pure "PrimitiveNode 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 setPrimitiveNodeSize(NodeInst ni, java.lang.Object width, java.lang.Object length)
          Method to set the size of a transistor NodeInst in this technology.
 void setVHDLNames(PrimitiveNode np, java.lang.String v)
          Method to set the VHDL names for a primitive in this technology.
static Schematics tech()
          the Schematics Technology object.
 
Methods inherited from class com.sun.electric.technology.Technology
addArcProto, addLayer, addNodeProto, cacheTransparentLayerColors, cleanUnusedNodesInLibrary, compareTo, computeShapeOfNode, convertOldArcName, convertOldNodeName, convertOldVariable, dump, dumpExtraProjectSettings, filterNodeGroups, findArcProto, findFoundry, findLayer, findLayerFromFunction, findNodeProto, findTechnology, findTechnology, getArcProto, getArcs, getArcsCollection, getCachedRules, getCMOS90Technology, getColorMap, getColorMap, getCurrent, getDiffAlpha, getDiffAlphaSetting, getDiskSettings, getFactoryColorMap, getFactoryDesignRules, getFactoryResolution, getFactoryTransparentLayerColors, getFoundries, getGateCapacitance, getGateCapacitanceSetting, getGateIncludedSetting, getGateLengthSubtraction, getGateLengthSubtractionSetting, getGDSLayers, getGroundNetIncludedSetting, getId, getIndex, getLayer, getLayerFromOverride, getLayers, getLayersSortedByHeight, getLayersSortedByName, getMaxSeriesResistance, getMaxSeriesResistanceSetting, getMinCapacitance, getMinCapacitanceSetting, getMinResistance, getMinResistanceSetting, getMocmosTechnology, getMultiCutData, getNodes, getNodesCollection, getNodesGrouped, getNodesGroupedXML, getNodesSortedByName, getNumArcs, getNumLayers, getNumMetals, getNumMetalsSetting, getNumNodes, getNumTransparentLayers, getOldArcNames, getOldNodeNames, getPrefComponentMenu, getPrefFoundry, getPrefFoundrySetting, getPrimitiveNode, getProjectSettings, getResolution, getRuleAliases, getRuleDifferences, getRuleNodeIndex, getRuleSuffix, getSavedLayerOrder, getScale, getScaleSetting, getScaleVariableName, getSelectedFoundry, getSetting, getShapeOfArc, getShapeOfArc, getShapeOfArc, getShapeOfArc, getShapeOfNode, getShapeOfNode, getShapeOfPort, getSizeCorrector, getSoftTechnologies, getSpacingDistances, getSpiceHeaderLevel1, getSpiceHeaderLevel2, getSpiceHeaderLevel3, getTechDesc, getTechName, getTechnologies, getTechnologyAllPreferences, getTechnologyPreferences, getTechnologyUserPreferences, getTechShortName, getTransistorActiveLength, getTransistorAltGatePort, getTransistorBasePort, getTransistorBiasPort, getTransistorCollectorPort, getTransistorEmitterPort, getTransistorGatePort, getTransistorSourcePort, getTransparentLayerColors, getTSMC180Technology, getWireRatio, getWireRatioSetting, getXmlTech, initAllTechnologies, isEasyShape, isGateIncluded, isGroundNetIncluded, isLayout, isMultiCutCase, isMultiCutInTechnology, isNoDirectionalArcs, isNoNegatedArcs, isNonElectrical, isNonStandard, isNoPrimitiveNodes, isScaleRelevant, isSchematics, isStaticTechnology, isUniversalConnectivityPort, isValidVTPolyRule, make3d, makeBooleanSetting, makeFactoryDesignRules, makeIntSetting, makeNodeInst, makeNodeInst, makeRuleSets, makeStringSetting, makeXml, makeXmlParam, newArcProto, newFoundry, printlnBits, printlnSetting, resizeArcs, resizeXml, sameLayer, setArcCorrection, setCachedRules, setColorMap, setColorMapFromLayers, setCurrent, setDefaultOutline, setFactoryLESettings, setFactoryParasitics, setFactoryResolution, setFactoryScale, setFactoryTransparentLayers, setNodesGrouped, setNoDirectionalArcs, setNoNegatedArcs, setNonElectrical, setNonStandard, setNoPrimitiveNodes, setNotUsed, setNumTransparentLayers, setResolution, setRuleVariables, setSavedLayerOrder, setSoftTechnologies, setSpiceHeaderLevel1, setSpiceHeaderLevel2, setSpiceHeaderLevel3, setState, setStateNow, setStaticTechnology, setTechDesc, setTechName, setTechShortName, setup, toString, whatTechnology, whatTechnology, writeReplace
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

SCHEM_GLOBAL_NAME

public static final Variable.Key SCHEM_GLOBAL_NAME
key of Variable holding global signal name.


SCHEM_RESISTANCE

public static final Variable.Key SCHEM_RESISTANCE
key of Variable holding resistance.


SCHEM_CAPACITANCE

public static final Variable.Key SCHEM_CAPACITANCE
key of Variable holding capacitance.


SCHEM_INDUCTANCE

public static final Variable.Key SCHEM_INDUCTANCE
key of Variable holding inductance.


SCHEM_DIODE

public static final Variable.Key SCHEM_DIODE
key of Variable holding diode area.


SCHEM_FUNCTION

public static final Variable.Key SCHEM_FUNCTION
key of Variable holding black-box function.


ATTR_WIDTH

public static final Variable.Key ATTR_WIDTH
key of Variable holding transistor width.


ATTR_LENGTH

public static final Variable.Key ATTR_LENGTH
key of Variable holding transistor length.


ATTR_AREA

public static final Variable.Key ATTR_AREA
key of Variable holding transistor area.


node_lay

public Layer node_lay
the node layer


wire_arc

public ArcProto wire_arc
wire arc


bus_arc

public ArcProto bus_arc
bus arc


wirePinNode

public PrimitiveNode wirePinNode
wire-pin


busPinNode

public PrimitiveNode busPinNode
bus-pin


wireConNode

public PrimitiveNode wireConNode
wire-con


bufferNode

public PrimitiveNode bufferNode
buffer


andNode

public PrimitiveNode andNode
and


orNode

public PrimitiveNode orNode
or


xorNode

public PrimitiveNode xorNode
xor


flipflopNode

public PrimitiveNode flipflopNode
flipflop


muxNode

public PrimitiveNode muxNode
mux


bboxNode

public PrimitiveNode bboxNode
bbox


switchNode

public PrimitiveNode switchNode
switch


offpageNode

public PrimitiveNode offpageNode
offpage


powerNode

public PrimitiveNode powerNode
power


groundNode

public PrimitiveNode groundNode
ground


sourceNode

public PrimitiveNode sourceNode
source


transistorNode

public PrimitiveNode transistorNode
transistor


resistorNode

public PrimitiveNode resistorNode
resistor


capacitorNode

public PrimitiveNode capacitorNode
capacitor


diodeNode

public PrimitiveNode diodeNode
diode


inductorNode

public PrimitiveNode inductorNode
inductor


meterNode

public PrimitiveNode meterNode
meter


wellNode

public PrimitiveNode wellNode
well


substrateNode

public PrimitiveNode substrateNode
substrate


twoportNode

public PrimitiveNode twoportNode
twoport


transistor4Node

public PrimitiveNode transistor4Node
transistor-4


globalNode

public PrimitiveNode globalNode
global


globalPartitionNode

public PrimitiveNode globalPartitionNode
global partition

Constructor Detail

Schematics

public Schematics(Generic generic)
Method Detail

tech

public static Schematics tech()
the Schematics Technology object.


getDefaultNodesGrouped

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

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

getShapeOfNode

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

Overrides:
getShapeOfNode in class Technology
Parameters:
ni - the NodeInst to describe.
electrical - true to get the "electrical" layers. This makes no sense for Schematics primitives.
reasonable - true to get only a minimal set of contact cuts in large contacts. This makes no sense for Schematics primitives.
primLayers - an array of NodeLayer objects to convert to Poly objects.
layerOverride - the layer to use for all generated polygons (if not null).
Returns:
an array of Poly objects.

getShapeOfPort

public Poly getShapeOfPort(NodeInst ni,
                           PrimitivePort pp,
                           java.awt.geom.Point2D selectPt)
Returns a polygon that describes a particular port on a NodeInst.

Overrides:
getShapeOfPort in class Technology
Parameters:
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.
Returns:
a Poly object that describes this PrimitivePort graphically.

getNodeInstBaseRectangle

public ERectangle getNodeInstBaseRectangle(NodeInst ni)
Method to get the base (highlight) ERectangle associated with a NodeInst in this PrimitiveNode. Base ERectangle is a highlight rectangle of standard-size NodeInst of this PrimtiveNode By having this be a method of Technology, it can be overridden by individual Technologies that need to make special considerations.

Overrides:
getNodeInstBaseRectangle in class Technology
Parameters:
ni - the NodeInst to query.
Returns:
the base ERectangle of this PrimitiveNode.

convertOldPortName

public PrimitivePort convertOldPortName(java.lang.String portName,
                                        PrimitiveNode np)
Method to convert old primitive port names to their proper PortProtos. This method overrides the general Technology version and attempts Schematic-specific tests first.

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

getPrimitiveFunction

public PrimitiveNode.Function getPrimitiveFunction(PrimitiveNode pn,
                                                   int techBits)
Method to return the pure "PrimitiveNode Function" a primitive NodeInst in this Technology. The Schematics technology allows primitives to have parameterized functions.

Overrides:
getPrimitiveFunction in class Technology
Parameters:
pn - PrimitiveNode to check.
techBits - tech bits
Returns:
the PrimitiveNode.Function that describes the PrinitiveNode with specific tech bits.

getPrimitiveFunctionBits

public static int getPrimitiveFunctionBits(PrimitiveNode.Function function)
Method to return the technology-specific function bits for a given PrimitiveNode.Function.

Parameters:
function - the universal function description
Returns:
the technology-specific bits to use for that function in this technology.

setPrimitiveFunction

public void setPrimitiveFunction(NodeInst ni,
                                 PrimitiveNode.Function function)
Method to set the pure "PrimitiveNode Function" for a primitive NodeInst in this Technology. This method is overridden by technologies (such as Schematics) that can change a node's function.

Overrides:
setPrimitiveFunction in class Technology
Parameters:
ni - the NodeInst to check.
function - the PrimitiveNode.Function to set on the NodeInst.

getResistorSize

public PrimitiveNodeSize getResistorSize(NodeInst ni,
                                         VarContext context)
Method to return the size of a resistor-type NodeInst in this Technology.

Overrides:
getResistorSize in class Technology
Parameters:
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).
Returns:
the size of the NodeInst.

getTransistorSize

public TransistorSize getTransistorSize(NodeInst ni,
                                        VarContext context)
Method to return the size of a transistor NodeInst in this Technology. You should most likely be calling NodeInst.getTransistorSize instead of this.

Overrides:
getTransistorSize in class Technology
Parameters:
ni - the NodeInst.
context - the VarContext, set to VarContext.globalContext if not needed. set to Null to avoid evaluation of variable.
Returns:
the size of the NodeInst. For FET transistors, the width of the Dimension is the width of the transistor and the height of the Dimension is the length of the transistor. For non-FET transistors, the width of the dimension is the area of the transistor.

setPrimitiveNodeSize

public void setPrimitiveNodeSize(NodeInst ni,
                                 double width,
                                 double length)
Method to set the size of a transistor NodeInst in this technology. You should be calling NodeInst.setTransistorSize instead of this. Width may be the area for non-FET transistors, in which case length is ignored. You may also want to call setTransistorSize(NodeInst, Object, Object) to set the variables to a non-double value (such as a String).

Overrides:
setPrimitiveNodeSize in class Technology
Parameters:
ni - the NodeInst
width - the new width
length - the new length

setPrimitiveNodeSize

public void setPrimitiveNodeSize(NodeInst ni,
                                 java.lang.Object width,
                                 java.lang.Object length)
Method to set the size of a transistor NodeInst in this technology. You should be calling NodeInst.setTransistorSize(Object, Object) instead. Width may be the area for non-FET transistors, in which case length is ignored.

Parameters:
ni - the NodeInst
width - the new width
length - the new length

getDefaultSchematicTechnology

public static Technology getDefaultSchematicTechnology()
Method to determine the default schematic technology. This is the technology to really use when the current technology is "schematics" and you want a layout technology. This is important in Spice deck generation (for example) because the Spice primitives may say "2x3" on them, but a real technology (such as "mocmos") must be found to convert these pure numbers to real spacings for the deck.


getTransistorDrainPort

public PortInst getTransistorDrainPort(NodeInst ni)
Method to return a gate PortInst for this transistor NodeInst. Implementation Note: May want to make this a more general method, getPrimitivePort(PortType), if the number of port types increases. Note: You should be calling NodeInst.getTransistorDrainPort() instead of this, most likely.

Overrides:
getTransistorDrainPort in class Technology
Parameters:
ni - the NodeInst
Returns:
a PortInst for the gate of the transistor

getNegatingBubbleSize

public double getNegatingBubbleSize()
Method to tell the size of negating bubbles.

Returns:
the size of negating bubbles (the diameter).

setNegatingBubbleSize

public void setNegatingBubbleSize(double s)
Method to set the size of negating bubbles.

Parameters:
s - the negating bubble size (the diameter).

getFactoryNegatingBubbleSize

public double getFactoryNegatingBubbleSize()
Method to tell the size of negating bubbles, by default.

Returns:
the size of negating bubbles (the diameter), by default.

getVHDLNames

public java.lang.String getVHDLNames(PrimitiveNode np)
Method to tell the VHDL names for a primitive in this technology. These names have the form REGULAR/NEGATED, where REGULAR is the name to use for regular uses of the primitive, and NEGATED is the name to use for negated uses.

Parameters:
np - the primitive to query.
Returns:
the the VHDL names for the primitive.

setVHDLNames

public void setVHDLNames(PrimitiveNode np,
                         java.lang.String v)
Method to set the VHDL names for a primitive in this technology. These names have the form REGULAR/NEGATED, where REGULAR is the name to use for regular uses of the primitive, and NEGATED is the name to use for negated uses.

Parameters:
np - the primitive to set.
v - the VHDL names for the primitive.

getFactoryVHDLNames

public java.lang.String getFactoryVHDLNames(PrimitiveNode np)
Method to tell the VHDL names for a primitive in this technology, by default. These names have the form REGULAR/NEGATED, where REGULAR is the name to use for regular uses of the primitive, and NEGATED is the name to use for negated uses.

Parameters:
np - the primitive to query.
Returns:
the the VHDL names for the primitive, by default.