edu.byu.ece.edif.jedif
Class JEdifNMRSelection

java.lang.Object
  extended by edu.byu.ece.edif.jedif.EDIFMain
      extended by edu.byu.ece.edif.jedif.JEdifNMRSelection

public class JEdifNMRSelection
extends EDIFMain


Field Summary
protected static java.util.Set<java.lang.String> _noReplicatePorts
          Set of String names of ports that should not be replicated
protected static boolean _override
           
protected static java.util.Collection<EdifPort> _portsNotToReplicate
          Collection of EdifPort objects to not be replicated
protected static java.util.Set<EdifPort> _portsToReplicate
          Set of EdifPort objects to be replicated.
protected static java.io.PrintStream debug
           
protected static java.io.PrintStream err
           
static java.lang.String FALSE
           
protected static java.util.List<EdifPortRefEdge> iobFeedbackEdges
           
protected static java.io.PrintStream out
           
protected static ReplicationType replicationType
           
protected static com.martiansoftware.jsap.JSAPResult result
           
static java.lang.String TRUE
           
 
Fields inherited from class edu.byu.ece.edif.jedif.EDIFMain
COPYRIGHT_STRING, DEFAULT_AUTHOR_STRING, EXECUTABLE_NAME, newLine, TOOL_SUMMARY_STRING, VERSION_DATE, VERSION_STRING
 
Constructor Summary
JEdifNMRSelection()
           
 
Method Summary
protected static void excludeFromReplication(EdifCell topCell, ReplicationUtilizationTracker rTracker, EdifEnvironment env, PreservedHierarchyByNames hierarchy)
           
protected static java.util.Set<EdifPort> filterPortsToReplicate(EdifCell cell, boolean repInputs, boolean repOutputs, java.util.Collection<java.lang.String> noReplicate, java.util.Collection<java.lang.String> replicate, ReplicationDescription rDesc)
          Start with all the top-level ports of the original cell, remove ports marked to not be replicated, and return the remaining set of ports, which is the set of ports to be replicated.
protected static void forceReplication(EdifCell topCell, ReplicationUtilizationTracker rTracker, EdifEnvironment env, PreservedHierarchyByNames hierarchy)
          Forces certain EdifCellInstances and cell types to be replicated based on the command line arguments provided by the user.
protected static XilinxNMRArchitecture getArchitecture(java.lang.String technologyString)
          Return a NMRArchitecture object for the specified technology.
static void main(java.lang.String[] args)
           
static ReplicationDescription nmr(EdifEnvironment env, EdifCell topCell, com.martiansoftware.jsap.JSAPResult result, CircuitDescription cDesc, ReplicationDescription rDesc, NMRArchitecture arch, PreservedHierarchyByNames hierarchy)
           
protected static void printNMRstats(DeviceUtilizationTracker duTracker, EdifCell flatCell)
          Prints out useful statistics about the projected NMR to be done
protected static java.util.Set<EdifPort> replicatePorts(EdifCell flatCell, ReplicationUtilizationTracker rTracker, IOBAnalyzer iobAnalyzer, ReplicationDescription rDesc)
          Marks specified ports for replication.
protected static void unifyBadCutGroups(EdifCellBadCutGroupings badCutGroupings, ReplicationUtilizationTracker rTracker)
          Makes sure that the ECIs within a BadCutGroup all have the same replication status.
 
Methods inherited from class edu.byu.ece.edif.jedif.EDIFMain
getExtendedVersionString, printProgramExecutableString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

out

protected static java.io.PrintStream out

err

protected static java.io.PrintStream err

result

protected static com.martiansoftware.jsap.JSAPResult result

replicationType

protected static ReplicationType replicationType

TRUE

public static java.lang.String TRUE

FALSE

public static java.lang.String FALSE

_noReplicatePorts

protected static java.util.Set<java.lang.String> _noReplicatePorts
Set of String names of ports that should not be replicated


_portsToReplicate

protected static java.util.Set<EdifPort> _portsToReplicate
Set of EdifPort objects to be replicated.


_override

protected static boolean _override

_portsNotToReplicate

protected static java.util.Collection<EdifPort> _portsNotToReplicate
Collection of EdifPort objects to not be replicated


debug

protected static java.io.PrintStream debug

iobFeedbackEdges

protected static java.util.List<EdifPortRefEdge> iobFeedbackEdges
Constructor Detail

JEdifNMRSelection

public JEdifNMRSelection()
Method Detail

main

public static void main(java.lang.String[] args)

nmr

public static ReplicationDescription nmr(EdifEnvironment env,
                                         EdifCell topCell,
                                         com.martiansoftware.jsap.JSAPResult result,
                                         CircuitDescription cDesc,
                                         ReplicationDescription rDesc,
                                         NMRArchitecture arch,
                                         PreservedHierarchyByNames hierarchy)

excludeFromReplication

protected static void excludeFromReplication(EdifCell topCell,
                                             ReplicationUtilizationTracker rTracker,
                                             EdifEnvironment env,
                                             PreservedHierarchyByNames hierarchy)
Parameters:
topCell -
duTracker -

filterPortsToReplicate

protected static java.util.Set<EdifPort> filterPortsToReplicate(EdifCell cell,
                                                                boolean repInputs,
                                                                boolean repOutputs,
                                                                java.util.Collection<java.lang.String> noReplicate,
                                                                java.util.Collection<java.lang.String> replicate,
                                                                ReplicationDescription rDesc)
Start with all the top-level ports of the original cell, remove ports marked to not be replicated, and return the remaining set of ports, which is the set of ports to be replicated.

Parameters:
cell - The original, un-replicated EdifCell
repInputs - Should inputs be replicated?
repOutputs - Should outputs be replicated?
noReplicate - A Collection of String objects of port names that will not be replicated.
Returns:
a Set of EdifPort objects to be replicated

forceReplication

protected static void forceReplication(EdifCell topCell,
                                       ReplicationUtilizationTracker rTracker,
                                       EdifEnvironment env,
                                       PreservedHierarchyByNames hierarchy)
Forces certain EdifCellInstances and cell types to be replicated based on the command line arguments provided by the user. Instance names are case sensitive, cell types are not.

Parameters:
forceInstanceStrings -
topCell -
duTracker -

getArchitecture

protected static XilinxNMRArchitecture getArchitecture(java.lang.String technologyString)
Return a NMRArchitecture object for the specified technology.

Parameters:
technologyString - The specified technology
Returns:
A NMRArchtecture object

printNMRstats

protected static void printNMRstats(DeviceUtilizationTracker duTracker,
                                    EdifCell flatCell)
Prints out useful statistics about the projected NMR to be done


replicatePorts

protected static java.util.Set<EdifPort> replicatePorts(EdifCell flatCell,
                                                        ReplicationUtilizationTracker rTracker,
                                                        IOBAnalyzer iobAnalyzer,
                                                        ReplicationDescription rDesc)
Marks specified ports for replication. IOB instances will be force replicated or force not replicated based on the replication status of their associated ports.

Parameters:
duTracker - The device utilization tracker
flatCell - The flattened EDIFCell object
Returns:
Set of all EdifPorts in the design to be replicated.

unifyBadCutGroups

protected static void unifyBadCutGroups(EdifCellBadCutGroupings badCutGroupings,
                                        ReplicationUtilizationTracker rTracker)
                                 throws java.lang.IllegalArgumentException
Makes sure that the ECIs within a BadCutGroup all have the same replication status.

Parameters:
badCutGroupings -
duTracker -
Throws:
DuplicateNMRRequestException
java.lang.IllegalArgumentException