edu.byu.ece.edif.tools.sterilize.halflatch
Class TopologicalEdifHalfLatchRemover

java.lang.Object
  extended by edu.byu.ece.edif.tools.sterilize.halflatch.EdifHalfLatchRemover
      extended by edu.byu.ece.edif.tools.sterilize.halflatch.TopologicalEdifHalfLatchRemover

public class TopologicalEdifHalfLatchRemover
extends EdifHalfLatchRemover

Since:
Created on Nov 9, 2005

Field Summary
private  int _constantSinkThreshold
           
 
Fields inherited from class edu.byu.ece.edif.tools.sterilize.halflatch.EdifHalfLatchRemover
_debug, _hlArchitecture, _safeConstantPolarity, _topLevelSafePortName, _usePortForConstant, DEFAULT_SAFE_CONSTANT_POLARITY, DEFAULT_USE_PORT_FOR_CONSTANT_BOOL
 
Constructor Summary
TopologicalEdifHalfLatchRemover(HalfLatchArchitecture hlArchitecture, int safeConstantPolarity, boolean usePortForConstant, int constantSinkThreshold)
           
TopologicalEdifHalfLatchRemover(HalfLatchArchitecture hlArchitecture, int safeConstantPolarity, boolean usePortForConstant, java.lang.String safeConstantPortName, int constantSinkThreshold)
           
 
Method Summary
protected  void fixPotentialHalfLatchesInEachCell(EdifEnvironment environment)
          Step 2 (pass 2) of the remove half-latch algorithm.
private  int removeHalfLatches(HalfLatchEdifCell hlCell)
          This method is the meat of the Topological half-latch removal algorithm.
 
Methods inherited from class edu.byu.ece.edif.tools.sterilize.halflatch.EdifHalfLatchRemover
convertCelltoHalfLatchCellDeep, main, removeHalfLatches, removeHalfLatches, setTopDesignAndInstance
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_constantSinkThreshold

private int _constantSinkThreshold
Constructor Detail

TopologicalEdifHalfLatchRemover

public TopologicalEdifHalfLatchRemover(HalfLatchArchitecture hlArchitecture,
                                       int safeConstantPolarity,
                                       boolean usePortForConstant,
                                       int constantSinkThreshold)

TopologicalEdifHalfLatchRemover

public TopologicalEdifHalfLatchRemover(HalfLatchArchitecture hlArchitecture,
                                       int safeConstantPolarity,
                                       boolean usePortForConstant,
                                       java.lang.String safeConstantPortName,
                                       int constantSinkThreshold)
Parameters:
hlArchitecture - Object which holds all of the architecture specific information
safeConstantPolarity - Polarity of the main safe-constant signal running around in the design
usePortForConstant - Boolean which determines whether or not the safe-constant network is driven through a port or internal constant generator cells
constantSinkThreshold - Threshold to determine when a cell should insert it's own safe-constant generator (rather than connect to the network provided by the next higher up level of hierarchy)
Method Detail

fixPotentialHalfLatchesInEachCell

protected void fixPotentialHalfLatchesInEachCell(EdifEnvironment environment)
Step 2 (pass 2) of the remove half-latch algorithm. For each cell in design libraries Remove the half-latches and constants in that cell. (This is the abstract method for this class and is currently implemented in a Sequential or Topological fashion. Each has different options.) end For

Specified by:
fixPotentialHalfLatchesInEachCell in class EdifHalfLatchRemover
Parameters:
environment - Container of objects relating to the design which is being modified
origCellToHalfLatchCellMap - Map from each original cell in design library to HalfLatchEdifCell version of the same cell. Overrides EdifHalfLatchRemover.fixPotentialHalfLatchesInEachCell(EdifEnvironment)

removeHalfLatches

private int removeHalfLatches(HalfLatchEdifCell hlCell)
This method is the meat of the Topological half-latch removal algorithm.

Parameters:
hlCell - The cell from which to remove half-latches and constants.
origCellToHalfLatchCellMap - Map from each original cell in design library to HalfLatchEdifCell version of the same cell.
Returns:
An integer indicating the number of ports the cell passed in needs driven through it's safe-constant port (0 will disconnect the cell from the higher levels of hierarchy and no safe-constant port will be created)