com.sun.electric.technology
Class Technology.NodeLayer

java.lang.Object
  extended by com.sun.electric.technology.Technology.NodeLayer
Enclosing class:
Technology

public static class Technology.NodeLayer
extends java.lang.Object

Defines a single layer of a PrimitiveNode. A PrimitiveNode has a list of these NodeLayer objects, one for each layer in a typical NodeInst. Each PrimitiveNode is composed of a number of NodeLayer descriptors. A descriptor converts a specific NodeInst into a polygon that describe this particular layer.


Field Summary
static int BOX
          Indicates that the "points" list defines a rectangle.
static Variable.Key CARBON_NANOTUBE_COUNT
          key of Variable for number of tubes in CNFET.
static Variable.Key CARBON_NANOTUBE_PITCH
          key of Variable for spacing of tubes in CNFET.
static Variable.Key CUT_ALIGNMENT
          key of Variable for overridint cut alignent
static Variable.Key CUT_SPACING
          key of Variable for overriding cut spacing.
static Variable.Key METAL_OFFSETS
          key of Variable for overriding metal surround.
static int MULTICUT_CENTERED
          CUT_ALIGNMENT: cuts centered in the node
static int MULTICUT_CORNER
          CUT_ALIGNMENT: cuts pushed to corner of node
static int MULTICUT_SPREAD
          CUT_ALIGNMENT: cuts spread to edges of node
static int MULTICUTBOX
          Indicates that the "points" list defines a rectangle, where centers of multi-cut are located It contains two diagonally opposite points.
static int POINTS
          Indicates that the "points" list defines scalable points.
 
Constructor Summary
Technology.NodeLayer(Layer layer, int portNum, Poly.Type style, int representation, Technology.TechPoint[] points)
          Constructs a NodeLayer with the specified description.
Technology.NodeLayer(Layer layer, int portNum, Poly.Type style, int representation, Technology.TechPoint[] points, double lWidth, double rWidth, double extentT, double extendB)
          Constructs a NodeLayer with the specified description.
Technology.NodeLayer(Technology.NodeLayer node)
          Constructs a NodeLayer from given node
 
Method Summary
 void fixup(EPoint fixupCorrector)
           
 EdgeV getBottomEdge()
          Returns the bottom edge coordinate (a scalable EdgeV object) associated with this NodeLayer.
 TextDescriptor getDescriptor()
          Returns the text descriptor associated with this list NodeLayer.
 int getGridMulticutSep1D()
           
 int getGridMulticutSep2D()
           
 int getGridMulticutSizeX()
           
 int getGridMulticutSizeY()
           
 Layer getLayer()
          Returns the Layer object associated with this NodeLayer.
 Layer getLayerOrPseudoLayer()
          Returns the Layer or pseudo-layer object associated with this NodeLayer.
 EdgeH getLeftEdge()
          Returns the left edge coordinate (a scalable EdgeH object) associated with this NodeLayer.
 java.lang.String getMessage()
          Returns the text message associated with this list NodeLayer.
 double getMulticutSep1D()
           
 double getMulticutSep2D()
           
 double getMulticutSizeX()
           
 double getMulticutSizeY()
           
 Technology.TechPoint[] getPoints()
          Returns the list of coordinates (stored as TechPoints) associated with this NodeLayer.
 PrimitivePort getPort(PrimitiveNode pn)
          Returns the port associated with this NodeLayer in specified PrimitiveNode.
 int getPortNum()
          Returns the 0-based index of the port associated with this NodeLayer.
 int getRepresentation()
          Returns the method of interpreting "points".
static java.lang.String getRepresentationName(int rep)
           
 EdgeH getRightEdge()
          Returns the right edge coordinate (a scalable EdgeH object) associated with this NodeLayer.
 double getSerpentineExtentB()
          Returns the bottom extension of this layer.
 double getSerpentineExtentT()
          Returns the top extension of this layer.
 double getSerpentineLWidth()
          Returns the left extension of this layer.
 double getSerpentineRWidth()
          Returns the right extension of this layer.
 Poly.Type getStyle()
          Returns the Poly.Type this NodeLayer will generate.
 EdgeV getTopEdge()
          Returns the top edge coordinate (a scalable EdgeV object) associated with this NodeLayer.
 boolean isPseudoLayer()
          Tells whether this NodeLayer is associated with pseudo-layer.
static Technology.NodeLayer makeMulticut(Layer layer, int portNum, Poly.Type style, Technology.TechPoint[] techPoints, double sizeX, double sizeY, double sep1d, double sep2d)
           
 void setDescriptor(TextDescriptor descriptor)
          Sets the text descriptor to be drawn by this NodeLayer.
 void setMessage(java.lang.String message)
          Sets the text to be drawn by this NodeLayer.
 void setSerpentineExtentB(double extendB)
          Sets the bottom extension of this layer.
 void setSerpentineExtentT(double extentT)
          Sets the top extension of this layer.
 void setSerpentineLWidth(double lWidth)
          Sets the left extension of this layer.
 void setSerpentineRWidth(double rWidth)
          Sets the right extension of this layer.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

POINTS

public static final int POINTS
Indicates that the "points" list defines scalable points. Each point here becomes a point on the Poly.

See Also:
Constant Field Values

BOX

public static final int BOX
Indicates that the "points" list defines a rectangle. It contains two diagonally opposite points.

See Also:
Constant Field Values

MULTICUTBOX

public static final int MULTICUTBOX
Indicates that the "points" list defines a rectangle, where centers of multi-cut are located It contains two diagonally opposite points.

See Also:
Constant Field Values

CUT_SPACING

public static final Variable.Key CUT_SPACING
key of Variable for overriding cut spacing.


CUT_ALIGNMENT

public static final Variable.Key CUT_ALIGNMENT
key of Variable for overridint cut alignent


METAL_OFFSETS

public static final Variable.Key METAL_OFFSETS
key of Variable for overriding metal surround.


CARBON_NANOTUBE_COUNT

public static final Variable.Key CARBON_NANOTUBE_COUNT
key of Variable for number of tubes in CNFET.


CARBON_NANOTUBE_PITCH

public static final Variable.Key CARBON_NANOTUBE_PITCH
key of Variable for spacing of tubes in CNFET.


MULTICUT_CENTERED

public static final int MULTICUT_CENTERED
CUT_ALIGNMENT: cuts centered in the node

See Also:
Constant Field Values

MULTICUT_SPREAD

public static final int MULTICUT_SPREAD
CUT_ALIGNMENT: cuts spread to edges of node

See Also:
Constant Field Values

MULTICUT_CORNER

public static final int MULTICUT_CORNER
CUT_ALIGNMENT: cuts pushed to corner of node

See Also:
Constant Field Values
Constructor Detail

Technology.NodeLayer

public Technology.NodeLayer(Layer layer,
                            int portNum,
                            Poly.Type style,
                            int representation,
                            Technology.TechPoint[] points)
Constructs a NodeLayer with the specified description.

Parameters:
layer - the Layer this is on.
portNum - a 0-based index of the port (from the actual NodeInst) on this layer. A negative value indicates that this layer is not connected to an electrical layer.
style - the Poly.Type this NodeLayer will generate (polygon, circle, text, etc.).
representation - tells how to interpret "points". It can be POINTS, BOX, or MULTICUTBOX.
points - the list of coordinates (stored as TechPoints) associated with this NodeLayer.

Technology.NodeLayer

public Technology.NodeLayer(Layer layer,
                            int portNum,
                            Poly.Type style,
                            int representation,
                            Technology.TechPoint[] points,
                            double lWidth,
                            double rWidth,
                            double extentT,
                            double extendB)
Constructs a NodeLayer with the specified description. This form of the method, with 4 additional parameters at the end, is only used for serpentine transistors.

Parameters:
layer - the Layer this is on.
portNum - a 0-based index of the port (from the actual NodeInst) on this layer. A negative value indicates that this layer is not connected to an electrical layer.
style - the Poly.Type this NodeLayer will generate (polygon, circle, text, etc.).
representation - tells how to interpret "points". It can be POINTS, BOX, or MULTICUTBIX.
points - the list of coordinates (stored as TechPoints) associated with this NodeLayer.
lWidth - the left extension of this layer, measured from the centerline. The centerline is the path that the serpentine transistor follows (it defines the path of the polysilicon). So, for example, if lWidth is 4 and rWidth is 4, it creates a NodeLayer that is 8 wide (with 4 to the left and 4 to the right of the centerline). Left and Right widths define the size of the Active layers.
rWidth - the right extension the right of this layer, measured from the centerline.
extentT - the top extension of this layer, measured from the end of the centerline. The top and bottom extensions apply to the ends of the centerline, and not to each segment along it. They define the extension of the polysilicon. For example, if extendT is 2, it indicates that the NodeLayer extends by 2 from the top end of the centerline.
extendB - the bottom extension of this layer, measured from the end of the centerline.

Technology.NodeLayer

public Technology.NodeLayer(Technology.NodeLayer node)
Constructs a NodeLayer from given node

Parameters:
node -
Method Detail

makeMulticut

public static Technology.NodeLayer makeMulticut(Layer layer,
                                                int portNum,
                                                Poly.Type style,
                                                Technology.TechPoint[] techPoints,
                                                double sizeX,
                                                double sizeY,
                                                double sep1d,
                                                double sep2d)

fixup

public void fixup(EPoint fixupCorrector)

getLayer

public Layer getLayer()
Returns the Layer object associated with this NodeLayer.

Returns:
the Layer object associated with this NodeLayer.

isPseudoLayer

public boolean isPseudoLayer()
Tells whether this NodeLayer is associated with pseudo-layer.

Returns:
true if this NodeLayer is associated with pseudo-layer.

getLayerOrPseudoLayer

public Layer getLayerOrPseudoLayer()
Returns the Layer or pseudo-layer object associated with this NodeLayer.

Returns:
the Layer or pseudo-layer object associated with this NodeLayer.

getPortNum

public int getPortNum()
Returns the 0-based index of the port associated with this NodeLayer.

Returns:
the 0-based index of the port associated with this NodeLayer.

getPort

public PrimitivePort getPort(PrimitiveNode pn)
Returns the port associated with this NodeLayer in specified PrimitiveNode.

Parameters:
pn - specified PrimitiveNode
Returns:
the port associated with this NodeLayer.

getStyle

public Poly.Type getStyle()
Returns the Poly.Type this NodeLayer will generate.

Returns:
the Poly.Type this NodeLayer will generate. Examples are polygon, lines, splines, circle, text, etc.

getRepresentation

public int getRepresentation()
Returns the method of interpreting "points".

Returns:
the method of interpreting "points". It can be POINTS, BOX, MINBOX, or MULTICUTBOX.

getRepresentationName

public static java.lang.String getRepresentationName(int rep)

getPoints

public Technology.TechPoint[] getPoints()
Returns the list of coordinates (stored as TechPoints) associated with this NodeLayer.

Returns:
the list of coordinates (stored as TechPoints) associated with this NodeLayer.

getLeftEdge

public EdgeH getLeftEdge()
Returns the left edge coordinate (a scalable EdgeH object) associated with this NodeLayer.

Returns:
the left edge coordinate associated with this NodeLayer. It only makes sense if the representation is BOX or MINBOX. The returned coordinate is a scalable EdgeH object.

getBottomEdge

public EdgeV getBottomEdge()
Returns the bottom edge coordinate (a scalable EdgeV object) associated with this NodeLayer.

Returns:
the bottom edge coordinate associated with this NodeLayer. It only makes sense if the representation is BOX or MINBOX. The returned coordinate is a scalable EdgeV object.

getRightEdge

public EdgeH getRightEdge()
Returns the right edge coordinate (a scalable EdgeH object) associated with this NodeLayer.

Returns:
the right edge coordinate associated with this NodeLayer. It only makes sense if the representation is BOX or MINBOX. The returned coordinate is a scalable EdgeH object.

getTopEdge

public EdgeV getTopEdge()
Returns the top edge coordinate (a scalable EdgeV object) associated with this NodeLayer.

Returns:
the top edge coordinate associated with this NodeLayer. It only makes sense if the representation is BOX or MINBOX. The returned coordinate is a scalable EdgeV object.

getMessage

public java.lang.String getMessage()
Returns the text message associated with this list NodeLayer.

Returns:
the text message associated with this list NodeLayer. This only makes sense if the style is one of the TEXT types.

setMessage

public void setMessage(java.lang.String message)
Sets the text to be drawn by this NodeLayer.

Parameters:
message - the text to be drawn by this NodeLayer. This only makes sense if the style is one of the TEXT types.

getDescriptor

public TextDescriptor getDescriptor()
Returns the text descriptor associated with this list NodeLayer.

Returns:
the text descriptor associated with this list NodeLayer. This only makes sense if the style is one of the TEXT types.

setDescriptor

public void setDescriptor(TextDescriptor descriptor)
Sets the text descriptor to be drawn by this NodeLayer.

Parameters:
descriptor - the text descriptor to be drawn by this NodeLayer. This only makes sense if the style is one of the TEXT types.

getSerpentineLWidth

public double getSerpentineLWidth()
Returns the left extension of this layer. Only makes sense when this is a layer in a serpentine transistor.

Returns:
the left extension of this layer.

setSerpentineLWidth

public void setSerpentineLWidth(double lWidth)
Sets the left extension of this layer. Only makes sense when this is a layer in a serpentine transistor.

Parameters:
lWidth - the left extension of this layer.

getSerpentineRWidth

public double getSerpentineRWidth()
Returns the right extension of this layer. Only makes sense when this is a layer in a serpentine transistor.

Returns:
the right extension of this layer.

setSerpentineRWidth

public void setSerpentineRWidth(double rWidth)
Sets the right extension of this layer. Only makes sense when this is a layer in a serpentine transistor.

Parameters:
rWidth - the right extension of this layer.

getSerpentineExtentT

public double getSerpentineExtentT()
Returns the top extension of this layer. Only makes sense when this is a layer in a serpentine transistor.

Returns:
the top extension of this layer.

setSerpentineExtentT

public void setSerpentineExtentT(double extentT)
Sets the top extension of this layer. Only makes sense when this is a layer in a serpentine transistor.

Parameters:
extentT - the top extension of this layer.

getSerpentineExtentB

public double getSerpentineExtentB()
Returns the bottom extension of this layer. Only makes sense when this is a layer in a serpentine transistor.

Returns:
the bottom extension of this layer.

setSerpentineExtentB

public void setSerpentineExtentB(double extendB)
Sets the bottom extension of this layer. Only makes sense when this is a layer in a serpentine transistor.

Parameters:
extendB - the bottom extension of this layer.

getMulticutSizeX

public double getMulticutSizeX()

getMulticutSizeY

public double getMulticutSizeY()

getMulticutSep1D

public double getMulticutSep1D()

getMulticutSep2D

public double getMulticutSep2D()

getGridMulticutSizeX

public int getGridMulticutSizeX()

getGridMulticutSizeY

public int getGridMulticutSizeY()

getGridMulticutSep1D

public int getGridMulticutSep1D()

getGridMulticutSep2D

public int getGridMulticutSep2D()