|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.sun.electric.tool.generator.layout.StdCellParams
public class StdCellParams
The bottom of the PMOS well and the top of the NMOS well are at y=0. PMOS tracks are numbered from 1 to nbPmosTracks(). These numbers correspond to the lowest and highest, respectively, unblocked tracks in the PMOS region. NMOS tracks are numbered from -1 to -nbNmosTracks(). These numbers correspond to the highest and lowest, respectively, unblocked tracks in the NMOS region.
Nested Class Summary | |
---|---|
static class |
StdCellParams.SelectFill
|
static interface |
StdCellParams.SelectSrcDrn
This class allows the user to specify which source/drains wireVddGnd() should connect to power or ground. |
Field Summary | |
---|---|
static StdCellParams.SelectSrcDrn |
EVEN
|
static StdCellParams.SelectSrcDrn |
ODD
|
Constructor Summary | |
---|---|
StdCellParams(TechType.TechTypeEnum techEnum)
|
Method Summary | |
---|---|
void |
addEssentialBounds(double loX,
double hiX,
Cell cell)
essential bounds for cells with both NMOS and PMOS |
static void |
addEssentialBoundsFromChildren(Cell cell,
TechType tech)
|
NodeInst |
addNmosWell(double loX,
double hiX,
Cell cell)
|
void |
addNstackEssentialBounds(double loX,
double hiX,
Cell cell)
essential bounds for NMOS only cells |
NodeInst |
addPmosWell(double loX,
double hiX,
Cell cell)
|
void |
addPstackEssentialBounds(double loX,
double hiX,
Cell cell)
essential bounds for PMOS only cells |
void |
addSelAroundDiff(NodeProto prot,
java.awt.geom.Rectangle2D diffNodeBnd,
double activeGateDiff,
Cell cell)
Add select node to ensure there is select surrounding the specified diffusion node |
boolean |
addWellCon(StdCellParams.SelectFill selFill,
PortInst gndPort,
PortInst vddPort,
Cell cell)
Note that nwellX denotes the X coord of the nwell contact cut, which goes in the Nwell (well that holds PMOS devices). |
void |
addWellsForRow(java.util.ArrayList<NodeInst> row,
double minX,
double maxX,
Cell cell)
Given an array of NodeInsts in a row, add wells to both ends of the row to bring the row to minX and maxX. |
FoldsAndWidth |
calcFoldsAndWidth(double spaceAvailWid,
double totWid,
int groupSz)
Calculate the number of folds and the width of a MOS transistor. |
double |
checkMinStrength(double specified,
double minAllowable,
java.lang.String gateNm)
Print a warning if strength is less than the minimum allowable. |
void |
doNCC(Cell layout,
java.lang.String schemNm)
Perform Network Consistency Check if the user has so requested |
void |
enableNCC(java.lang.String libName)
Turn on Network Consistency Checking after each gate is generated. |
void |
fillDiffAndSelectNotches(FoldedMos[] moss,
boolean fillDiffNotch)
Fix notch errors between adjacent source/drain regions. |
StdCellParams.SelectFill |
fillSelect(Cell cell,
boolean pSelect,
boolean nSelect,
boolean includePoly)
This fills the cell with N/P select over current N/P select areas, and over poly. |
Cell |
findPart(java.lang.String partNm)
|
Cell |
findPart(java.lang.String partNm,
double sz)
Look for parts in layoutLib |
double |
getCellBot()
|
double |
getCellTop()
|
boolean |
getDoubleStrapGate()
|
double |
getDRCRingSpacing()
|
double |
getEnableGateStrengthRatio()
|
boolean |
getExhaustivePlace()
|
double |
getFoldPitch(int nbSeries)
Get the fold pitch for folded transistor, given the number of series transistors |
java.lang.String |
getGndExportName()
|
PortCharacteristic |
getGndExportRole()
|
double |
getGndWidth()
|
double |
getGndY()
|
double |
getGridResolution()
|
double |
getM1TrackAboveVDD()
|
double |
getM1TrackBelowGnd()
|
double |
getM1TrackWidth()
|
double |
getM2TrackWidth()
|
int |
getNbPlacerPerms()
|
double |
getNmosWellHeight()
|
java.lang.String |
getNmosWellTieName()
|
PortCharacteristic |
getNmosWellTieRole()
|
double |
getNmosWellTieWidth()
|
double |
getNmosWellTieY()
|
double |
getPhysTrackY(int i)
A physical track number enumerates all tracks regardless of whether the track is blocked. |
double |
getPmosWellHeight()
|
java.lang.String |
getPmosWellTieName()
|
PortCharacteristic |
getPmosWellTieRole()
|
double |
getPmosWellTieWidth()
|
double |
getPmosWellTieY()
|
static double |
getRightDiffX(FoldedMos m)
|
static double |
getRightDiffX(FoldedMos[] moss)
|
static double |
getRightDiffX(java.lang.Object a,
java.lang.Object b)
Find the X coordinate of the right most diffusion. |
java.util.HashMap<java.lang.String,java.lang.Object> |
getSchemTrackAssign(Cell schem)
|
boolean |
getSeparateWellTies()
|
boolean |
getSimpleName()
|
static double |
getSize(NodeInst iconInst,
VarContext context)
|
TechType |
getTechType()
|
double |
getTrackPitch()
|
double |
getTrackY(int i)
Gets the Y coordinate of the ith available track. |
java.lang.String |
getVddExportName()
|
PortCharacteristic |
getVddExportRole()
|
double |
getVddWidth()
|
double |
getVddY()
|
double |
getWellOverhangDiff()
|
double |
getWellTiePitch()
|
int |
nbNmosTracks()
Get the number of NMOS tracks. |
int |
nbPmosTracks()
Get the number of PMOS tracks. |
boolean |
nccEnabled()
|
Cell |
newPart(java.lang.String partNm)
|
Cell |
newPart(java.lang.String partNm,
double sz)
|
java.lang.String |
parameterizedName(java.lang.String nm)
Add qualifiers to Cell name to reflect StdCell parameters "_NH70" for NMOS region height of 70 lambda "_PH70" for PMOS region height of 70 lambda "_MW70" for maximum transistor width of 70 lambda |
double |
quantizeSize(double desiredSize)
|
double |
roundGateWidth(double w)
round to nearest multiple of 1/2 lambda for MoCMOS, nearest multiple of 0.2 for CMOS90 |
double |
roundSize(double s)
quantize size. |
double |
roundToGrid(double s)
|
void |
setDoubleStrapGate(boolean val)
Attach the well ties to special busses rather than to Vdd and Gnd. |
void |
setExhaustivePlace(boolean val)
GasP generators use exhaustive search for gate placement |
void |
setGndExportName(java.lang.String gndNm)
|
void |
setGndExportRole(PortCharacteristic gndRole)
|
void |
setGndWidth(double width)
Set the width of the Gnd track |
void |
setGndY(double y)
|
void |
setM1TrackWidth(double width)
|
void |
setM2TrackWidth(double width)
|
void |
setMaxMosWidth(double wid)
Set the maximum width of a each MOS finger. |
void |
setNbPlacerPerms(int i)
Set number of permuations GasP placer should try before giving up. |
void |
setNmosTrackOffset(double offset)
Set the starting offset from 0 of the nmos tracks |
void |
setNmosWellHeight(double h)
Units of lambda |
void |
setPmosTrackOffset(double offset)
Set the starting offset from 0 of the pmos tracks |
void |
setPmosWellHeight(double h)
Units of lambda |
void |
setSeparateWellTies(boolean b)
Connect well ties to separate exports rather than vdd and gnd |
void |
setSimpleName(boolean b)
|
void |
setSizeQuantizationError(double err)
|
void |
setTrackWidth(double width)
Set the track width |
void |
setVddExportName(java.lang.String vddNm)
|
void |
setVddExportRole(PortCharacteristic vddRole)
|
void |
setVddWidth(double width)
Set the width of the Vdd track |
void |
setVddY(double y)
|
java.lang.String |
sizedName(java.lang.String nm,
double sz)
Add qualifiers to Cell name to reflect StdCell parameters and part strength "_NH70" for NMOS region height of 70 lambda "_PH70" for PMOS region height of 70 lambda "_MW70" for maximum transistor width of 70 lambda "_X12.5" for strength of 12.5 "{lay}" to indicate this is a layout Cell |
void |
validateTrackAssign(java.util.HashMap<java.lang.String,java.lang.Object> asgn,
Cell s)
|
void |
wireVddGnd(FoldedMos[] moss,
StdCellParams.SelectSrcDrn select,
Cell p)
Wire pmos or nmos to vdd or gnd, respectively. |
void |
wireVddGnd(FoldedMos mos,
StdCellParams.SelectSrcDrn select,
Cell p)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final StdCellParams.SelectSrcDrn EVEN
public static final StdCellParams.SelectSrcDrn ODD
Constructor Detail |
---|
public StdCellParams(TechType.TechTypeEnum techEnum)
Method Detail |
---|
public void setDoubleStrapGate(boolean val)
public void setExhaustivePlace(boolean val)
public void setNbPlacerPerms(int i)
public void setNmosWellHeight(double h)
public void setPmosWellHeight(double h)
public void setMaxMosWidth(double wid)
public void setPmosTrackOffset(double offset)
public void setNmosTrackOffset(double offset)
public void setTrackWidth(double width)
public void setVddWidth(double width)
public void setGndWidth(double width)
public void setM1TrackWidth(double width)
public double getM1TrackWidth()
public void setM2TrackWidth(double width)
public double getM2TrackWidth()
public double getDRCRingSpacing()
public double getM1TrackAboveVDD()
public double getM1TrackBelowGnd()
public double getWellOverhangDiff()
public double getGridResolution()
public double getFoldPitch(int nbSeries)
public void enableNCC(java.lang.String libName)
This just checks topology and ignores sizes.
public void setVddExportName(java.lang.String vddNm)
public java.lang.String getVddExportName()
public void setGndExportName(java.lang.String gndNm)
public java.lang.String getGndExportName()
public void setVddExportRole(PortCharacteristic vddRole)
public PortCharacteristic getVddExportRole()
public void setGndExportRole(PortCharacteristic gndRole)
public PortCharacteristic getGndExportRole()
public TechType getTechType()
public double getNmosWellHeight()
public double getPmosWellHeight()
public boolean getDoubleStrapGate()
public boolean getExhaustivePlace()
public int getNbPlacerPerms()
public double getCellBot()
public double getCellTop()
public double getGndY()
public void setGndY(double y)
public double getVddY()
public void setVddY(double y)
public double getGndWidth()
public double getVddWidth()
public double getTrackY(int i)
public double getPhysTrackY(int i)
public double getTrackPitch()
public int nbNmosTracks()
public int nbPmosTracks()
public boolean getSeparateWellTies()
public void setSeparateWellTies(boolean b)
public double getNmosWellTieY()
public double getPmosWellTieY()
public double getNmosWellTieWidth()
public double getPmosWellTieWidth()
public java.lang.String getNmosWellTieName()
public java.lang.String getPmosWellTieName()
public PortCharacteristic getNmosWellTieRole()
public PortCharacteristic getPmosWellTieRole()
public void setSimpleName(boolean b)
public boolean getSimpleName()
public double getWellTiePitch()
public double getEnableGateStrengthRatio()
public double roundGateWidth(double w)
public double roundSize(double s)
public double roundToGrid(double s)
public void setSizeQuantizationError(double err)
public double quantizeSize(double desiredSize)
public java.lang.String parameterizedName(java.lang.String nm)
public java.lang.String sizedName(java.lang.String nm, double sz)
public NodeInst addNmosWell(double loX, double hiX, Cell cell)
public NodeInst addPmosWell(double loX, double hiX, Cell cell)
public void addWellsForRow(java.util.ArrayList<NodeInst> row, double minX, double maxX, Cell cell)
public void addPstackEssentialBounds(double loX, double hiX, Cell cell)
public void addNstackEssentialBounds(double loX, double hiX, Cell cell)
public void addEssentialBounds(double loX, double hiX, Cell cell)
public double checkMinStrength(double specified, double minAllowable, java.lang.String gateNm)
public FoldsAndWidth calcFoldsAndWidth(double spaceAvailWid, double totWid, int groupSz)
If it is possible, allocate an even number of fingers so that the left most and right most diffusion contacts may be connected to power or ground to reducing the capacitance of the inner switching diffusion contacts.
spaceAvailWid
- the height in the standard cell that is
available for the diffusion of the MOS transistor.totWid
- the total electrical width required.groupSz
- This method creates fingers in multiples of
groupSz. For example, if groupSz is 2, then only even numbers of
fingers are created. This is needed when one FoldedMos is
actually going to be wired up as 2 identical, independent
transistors, for example the 2 PMOS pullups for a 2-input NAND
gate.public void fillDiffAndSelectNotches(FoldedMos[] moss, boolean fillDiffNotch)
Mos transistors with source/drain regions that are too close to each other result in notch errors for diffusion, metal1, and/or select. Fix these notch errors by running diffusion, and/or metal1 between the adjacent diffusion regions.
moss
- An array of adjacent FoldedMos transistors arrangedfillDiffNotch
- public void wireVddGnd(FoldedMos[] moss, StdCellParams.SelectSrcDrn select, Cell p)
public void wireVddGnd(FoldedMos mos, StdCellParams.SelectSrcDrn select, Cell p)
public boolean nccEnabled()
public void doNCC(Cell layout, java.lang.String schemNm)
public static double getSize(NodeInst iconInst, VarContext context)
public Cell findPart(java.lang.String partNm, double sz)
public Cell findPart(java.lang.String partNm)
public Cell newPart(java.lang.String partNm, double sz)
public Cell newPart(java.lang.String partNm)
public static double getRightDiffX(FoldedMos m)
public static double getRightDiffX(FoldedMos[] moss)
public static double getRightDiffX(java.lang.Object a, java.lang.Object b)
public static void addEssentialBoundsFromChildren(Cell cell, TechType tech)
public java.util.HashMap<java.lang.String,java.lang.Object> getSchemTrackAssign(Cell schem)
public void validateTrackAssign(java.util.HashMap<java.lang.String,java.lang.Object> asgn, Cell s)
public void addSelAroundDiff(NodeProto prot, java.awt.geom.Rectangle2D diffNodeBnd, double activeGateDiff, Cell cell)
public StdCellParams.SelectFill fillSelect(Cell cell, boolean pSelect, boolean nSelect, boolean includePoly)
cell
- the cell to fillpSelect
- nSelect
- includePoly
- public boolean addWellCon(StdCellParams.SelectFill selFill, PortInst gndPort, PortInst vddPort, Cell cell)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |