public class RowCol extends PlacementFrame
PlacementFrame.PlacementNetwork, PlacementFrame.PlacementNode, PlacementFrame.PlacementParameter, PlacementFrame.PlacementPort
Modifier and Type | Field and Description |
---|---|
protected boolean |
columnPlacement
true if doing column placement
|
protected boolean |
flipAlternateColsRows
true to flip alternate stacks
|
protected boolean |
makeStacksEven
true to even stacks after placement
|
protected java.util.List<com.sun.electric.tool.placement.general.RowCol.ProxyNode> |
nodesToPlace
list of proxy nodes
|
protected int |
numStacks
number of stacks of cells
|
protected java.util.Map<PlacementFrame.PlacementNode,com.sun.electric.tool.placement.general.RowCol.ProxyNode> |
proxyMap
map from original PlacementNodes to proxy nodes
|
protected java.util.List<com.sun.electric.tool.placement.general.RowCol.ProxyNode>[] |
stackContents
the contents of the stacks
|
protected double[] |
stackCoords
X coordinates (of columns) or Y coordinates (of rows)
|
protected boolean[] |
stacksBusy
indicator of stack usage in a thread
|
protected double[] |
stackSizes
the height (of columns) or width (of rows)
|
numOfThreads, runtime
Constructor and Description |
---|
RowCol() |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
getAlgorithmName()
Method to return the name of this placement algorithm.
|
protected com.sun.electric.tool.placement.general.RowCol.ProxyNode |
getRandomNode(int index)
Method that finds a random ProxyNode in a specific stack.
|
protected void |
implementMove(com.sun.electric.tool.placement.general.RowCol.ProxyNode node,
int oldIndex,
int newIndex,
int newPlaceInStack) |
static java.lang.Boolean |
isColumnPlacement(java.util.List<PlacementFrame.PlacementNode> placementNodes,
java.util.Set<java.lang.Double> widths,
java.util.Set<java.lang.Double> heights,
boolean quiet)
Method to determine whether this is row or column placement.
|
protected int |
lockRandomStack() |
protected double |
netLength(PlacementFrame.PlacementNetwork net,
int workingIndex1,
int workingIndex2)
Method that calculates the bounding box net length approximation for a given net.
|
protected void |
proposeMove(com.sun.electric.tool.placement.general.RowCol.ProxyNode node,
int oldIndex,
int newIndex,
int newPlaceInStack) |
protected void |
releaseStack(int index) |
void |
runPlacement(java.util.List<PlacementFrame.PlacementNode> placementNodes,
java.util.List<PlacementFrame.PlacementNetwork> allNetworks,
java.util.List<PlacementAdapter.PlacementExport> exportsToPlace,
java.lang.String cellName,
Job job)
Method to do placement by simulated annealing.
|
protected boolean |
runRowColPlacement(java.util.List<PlacementFrame.PlacementNode> placementNodes,
java.util.List<PlacementFrame.PlacementNetwork> allNetworks) |
getOriginalCell, getParameters, getRedispCell, getStandardCellSize, isFailure, setFailure, setOriginalCell, setParamterValues, setRedispCell
protected java.util.List<com.sun.electric.tool.placement.general.RowCol.ProxyNode> nodesToPlace
protected java.util.Map<PlacementFrame.PlacementNode,com.sun.electric.tool.placement.general.RowCol.ProxyNode> proxyMap
protected boolean columnPlacement
protected int numStacks
protected java.util.List<com.sun.electric.tool.placement.general.RowCol.ProxyNode>[] stackContents
protected double[] stackSizes
protected double[] stackCoords
protected boolean[] stacksBusy
protected boolean makeStacksEven
protected boolean flipAlternateColsRows
public java.lang.String getAlgorithmName()
getAlgorithmName
in class PlacementFrame
public void runPlacement(java.util.List<PlacementFrame.PlacementNode> placementNodes, java.util.List<PlacementFrame.PlacementNetwork> allNetworks, java.util.List<PlacementAdapter.PlacementExport> exportsToPlace, java.lang.String cellName, Job job)
runPlacement
in class PlacementFrame
placementNodes
- a list of all nodes that are to be placed.allNetworks
- a list of all networks that connect the nodes.cellName
- the name of the cell being placed.job
- the Job (for testing abort).protected boolean runRowColPlacement(java.util.List<PlacementFrame.PlacementNode> placementNodes, java.util.List<PlacementFrame.PlacementNetwork> allNetworks)
public static java.lang.Boolean isColumnPlacement(java.util.List<PlacementFrame.PlacementNode> placementNodes, java.util.Set<java.lang.Double> widths, java.util.Set<java.lang.Double> heights, boolean quiet)
placementNodes
- the nodes to be placed.protected void implementMove(com.sun.electric.tool.placement.general.RowCol.ProxyNode node, int oldIndex, int newIndex, int newPlaceInStack)
protected void proposeMove(com.sun.electric.tool.placement.general.RowCol.ProxyNode node, int oldIndex, int newIndex, int newPlaceInStack)
protected int lockRandomStack()
protected void releaseStack(int index)
protected double netLength(PlacementFrame.PlacementNetwork net, int workingIndex1, int workingIndex2)
net
- the PlacementNetwork to analyze.workingIndex1
- a stack number that is being "proposed".workingIndex2
- another stack number that is being "proposed".protected com.sun.electric.tool.placement.general.RowCol.ProxyNode getRandomNode(int index)
index
- the stack index.