com.sun.electric.tool.ncc.netlist
Class Mos

java.lang.Object
  extended by com.sun.electric.tool.ncc.netlist.NetObject
      extended by com.sun.electric.tool.ncc.netlist.Part
          extended by com.sun.electric.tool.ncc.netlist.Mos
All Implemented Interfaces:
NetObjReport.NetObjReportable, PartReport.PartReportable

public class Mos
extends Part

One or more MOS transistors in series. All gates have the same width and length. If MOS has body port then last entry in pins array is body wire


Nested Class Summary
 
Nested classes/interfaces inherited from class com.sun.electric.tool.ncc.netlist.NetObject
NetObject.Type
 
Field Summary
 
Fields inherited from class com.sun.electric.tool.ncc.netlist.Part
pins, TYPE_FIELD_WIDTH
 
Constructor Summary
Mos(PrimitiveNode.Function np, NccNameProxy.PartNameProxy name, double width, double length, Wire src, Wire gate, Wire drn)
          Transistor without body port.
Mos(PrimitiveNode.Function np, NccNameProxy.PartNameProxy name, double width, double length, Wire src, Wire gate, Wire drn, Wire body)
          Transistor with body port.
 
Method Summary
 java.lang.Integer computeHashCode()
           
 java.lang.String connectionDescription(int n)
          human readable description of things connected this NetObject
 java.lang.String connectionDescription(Wire w)
          comma separated list of pins connected to w
 double getLength()
           
 int[] getPinCoeffs()
          Here is an accessor method for the coefficient array for this Part.
 PinType getPinTypeOfNthPin(int n)
           
 double getWidth()
           
 java.lang.Integer hashCodeForParallelMerge()
          Compute a hash code for this part for the purpose of performing parallel merge.
 boolean isCapacitor()
           
 boolean isLike(Mos t, NccOptions nccOpt)
          Compare the type (N vs P) and the gate length
static boolean joinOnWire(Wire w, NccOptions nccOpt)
          Merge two series Transistors into a single Transistor.
 int numSeries()
           
 boolean parallelMerge(Part p, NccOptions nccOpt)
          This method attempts to merge this Part in parallel with another Part
 boolean touchesOnlyOneDiffAndNoGate(Wire w)
           
 int typeCode()
          returns a unique int value for each distinct Part type
 java.lang.String typeString()
          returns String describing Part's type
 java.lang.String valueDescription()
          Report the numeric values of this Part, for example: width, length, resistance.
 
Methods inherited from class com.sun.electric.tool.ncc.netlist.Part
checkMe, getConnected, getHashFor, getName, getNameProxy, getNetObjType, instanceDescription, isDeleted, isMos, isResistor, numDistinctWires, numPins, numPinsConnected, setDeleted, type
 
Methods inherited from class com.sun.electric.tool.ncc.netlist.NetObject
error, fullDescription, getCode, getParent, setParent, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.sun.electric.tool.ncc.result.NetObjReport.NetObjReportable
fullDescription
 

Constructor Detail

Mos

public Mos(PrimitiveNode.Function np,
           NccNameProxy.PartNameProxy name,
           double width,
           double length,
           Wire src,
           Wire gate,
           Wire drn)
Transistor without body port.


Mos

public Mos(PrimitiveNode.Function np,
           NccNameProxy.PartNameProxy name,
           double width,
           double length,
           Wire src,
           Wire gate,
           Wire drn,
           Wire body)
Transistor with body port.

Method Detail

getPinTypeOfNthPin

public PinType getPinTypeOfNthPin(int n)
Specified by:
getPinTypeOfNthPin in class Part
Returns:
the PinType for the nth pin

getLength

public double getLength()
Specified by:
getLength in interface PartReport.PartReportable
Overrides:
getLength in class Part

getWidth

public double getWidth()
Specified by:
getWidth in interface PartReport.PartReportable
Overrides:
getWidth in class Part

numSeries

public int numSeries()

getPinCoeffs

public int[] getPinCoeffs()
Description copied from class: Part
Here is an accessor method for the coefficient array for this Part. The terminal coefficients are used to compute new hash codes.

Specified by:
getPinCoeffs in class Part
Returns:
the array of terminal coefficients for this Part

touchesOnlyOneDiffAndNoGate

public boolean touchesOnlyOneDiffAndNoGate(Wire w)
Returns:
true if Wire w connects to exactly one diffusion and w doesn't connect to any gate

isCapacitor

public boolean isCapacitor()
Returns:
true if Mos is a capacitor. That is both diffusions are connected

hashCodeForParallelMerge

public java.lang.Integer hashCodeForParallelMerge()
Description copied from class: Part
Compute a hash code for this part for the purpose of performing parallel merge. If two parallel Parts should be merged into one then hashCodeForParallelMerge() must return the same value for both Parts.

Specified by:
hashCodeForParallelMerge in class Part

parallelMerge

public boolean parallelMerge(Part p,
                             NccOptions nccOpt)
Description copied from class: Part
This method attempts to merge this Part in parallel with another Part

Specified by:
parallelMerge in class Part
Parameters:
p - the other Part with which to merge
nccOpt - NccOptions. Used for size tolerance specification.
Returns:
true if merge was successful, false otherwise

typeCode

public int typeCode()
Description copied from class: Part
returns a unique int value for each distinct Part type

Specified by:
typeCode in class Part

typeString

public java.lang.String typeString()
Description copied from class: Part
returns String describing Part's type

Specified by:
typeString in interface PartReport.PartReportable
Specified by:
typeString in class Part

valueDescription

public java.lang.String valueDescription()
Description copied from class: Part
Report the numeric values of this Part, for example: width, length, resistance.

Specified by:
valueDescription in class Part
Returns:
a String describing the Part's numeric values.

connectionDescription

public java.lang.String connectionDescription(int n)
Description copied from class: NetObject
human readable description of things connected this NetObject

Specified by:
connectionDescription in class NetObject

connectionDescription

public java.lang.String connectionDescription(Wire w)
Description copied from class: Part
comma separated list of pins connected to w

Specified by:
connectionDescription in class Part

isLike

public boolean isLike(Mos t,
                      NccOptions nccOpt)
Compare the type (N vs P) and the gate length

Parameters:
t - Transistor to compare to
Returns:
true if type and gate length match

joinOnWire

public static boolean joinOnWire(Wire w,
                                 NccOptions nccOpt)
Merge two series Transistors into a single Transistor. Tricky: Parts on wire may be deleted or replicated.

Parameters:
w - wire joining diffusions of two transistors
Returns:
true if merge has taken place

computeHashCode

public java.lang.Integer computeHashCode()
Overrides:
computeHashCode in class Part