|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectedu.byu.ece.edif.util.clockdomain.ClockDomainParser
public class ClockDomainParser
This class is used to identify clock domains in a flattened EDIF design and then classify nets into one of those domains. Once nets are classified, EdifCellInstances can also be classified into those domains.
| Field Summary | |
|---|---|
protected java.util.Map<EdifNet,java.util.Set<EdifCellInstance>> |
_clkToECIMap
A map whose keys are EdifNets that have been classified as clocks. |
protected java.util.Map<EdifNet,java.util.Set<EdifNet>> |
_clkToNetMap
A map whose keys are EdifNets that have been classified as clocks. |
protected EdifCellInstanceGraph |
_ecic
A graph structure used for efficiently traversing the EDIF design. |
protected java.util.Set<EdifCellInstance> |
_noClockECIs
A set of EdifCellInstances that do not fall into any of the classified domains. |
protected java.util.Set<EdifNet> |
_noClockNets
A set of EdifNets that do not fall into any of the classified domains. |
protected ClockDomainCommandParser |
_parser
ClockDomainCommandParser used to parse the command-line arguments of ClockDomainArchitectureImpl. |
private static java.util.Set<java.lang.String> |
_resetPortNames
|
protected com.martiansoftware.jsap.JSAPResult |
_result
JSAPResult used to access the command-line arguments after being parsed. |
protected EdifEnvironment |
_top
An EdifEnvironment used to store the environment of the flattened design. |
protected static java.lang.String |
ALL
|
protected static java.lang.String |
BAR
|
protected java.io.PrintStream |
output
|
protected static java.lang.String |
RAM_PREFIX
|
| Constructor Summary | |
|---|---|
ClockDomainParser(FlattenedEdifCell flatCell)
Construct a ClockDomainArchitectureImpl object and initialize for clock domain analysis. |
|
ClockDomainParser(FlattenedEdifCell flatCell,
EdifCellInstanceGraph ecic)
Construct a ClockDomainArchitectureImpl object and initialize for clock domain analysis. |
|
ClockDomainParser(java.lang.String fileName,
java.lang.String[] dirs,
java.lang.String[] files)
Construct a ClockDomainArchitectureImpl object and parse and flatten the EDIF design to be used for clock domain analysis |
|
| Method Summary | |
|---|---|
protected void |
analyzeSCCs(SCCDepthFirstSearch scc)
Output summary of SCC to a printstream |
protected java.util.Map<EdifNet,java.util.Set<EdifCellInstance>> |
classifyECIs()
Iterate through the design and classify EdifCellInstances into a clock domain. |
protected java.util.Map<EdifNet,java.util.Set<EdifNet>> |
classifyNets()
Iterate through the design and classify nets into a clock domain. |
protected SCCDepthFirstSearch |
doSCCAnalysis(boolean noIOBFB)
Perform SCC decomposition on the EdifCellInstanceGraph graph. |
void |
exec(java.io.PrintStream out)
|
protected java.util.Map<EdifNet,java.util.Set<EdifCellInstance>> |
getAsynchronousResets()
Find all asynchronous resets/presets in the design. |
protected java.util.Map<java.lang.String,java.util.Set<java.lang.String>> |
getClockCrossings()
Find all clock crossing in the design. |
java.util.Map<EdifNet,java.util.Set<EdifCellInstance>> |
getECIMap()
Public method to return _clkToECIMap after classifying the nets and ECIs. |
static java.lang.String |
getVersionInfo()
|
private boolean |
hasAsynchronousReset(EdifCell cell)
Return true if the EdifCell ec has an asynchronous reset/preset. |
private void |
init(FlattenedEdifCell flatCell)
Initialize the ClockDomainArchitectureImpl object by removing the original cell from the flattened cell's library. |
private boolean |
isClockDriver(EdifCell cell)
Return true if the EdifCell ec is BUFG, DLL, or DCM |
private boolean |
isSequential(EdifCell cell)
Return true if the EdifCell ec is sequential (has a clock port). |
static void |
main(java.lang.String[] args)
|
void |
parseCommandlineOptions(com.martiansoftware.jsap.JSAPResult result)
|
void |
setOutput(java.io.PrintStream out)
|
private void |
show_gated_clocks()
|
private void |
showAsync(java.util.Set<EdifNet> clocks,
boolean async,
boolean async_reset,
boolean async_reset_cells)
|
private void |
showCells(java.util.Set<EdifNet> clocks)
|
private void |
showClockCrossings()
|
private void |
showDottyGraph()
|
private void |
showNets(java.util.Set<EdifNet> clocks)
|
private void |
showSyncronous(java.util.Set<EdifNet> clocks)
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected java.io.PrintStream output
protected java.util.Map<EdifNet,java.util.Set<EdifNet>> _clkToNetMap
protected java.util.Map<EdifNet,java.util.Set<EdifCellInstance>> _clkToECIMap
protected java.util.Set<EdifNet> _noClockNets
protected java.util.Set<EdifCellInstance> _noClockECIs
protected EdifCellInstanceGraph _ecic
protected EdifEnvironment _top
protected ClockDomainCommandParser _parser
protected com.martiansoftware.jsap.JSAPResult _result
protected static final java.lang.String BAR
protected static final java.lang.String ALL
protected static final java.lang.String RAM_PREFIX
private static final java.util.Set<java.lang.String> _resetPortNames
| Constructor Detail |
|---|
public ClockDomainParser(FlattenedEdifCell flatCell)
throws InvalidEdifNameException
flatCell - The FlattenedEdifCell to analyze
InvalidEdifNameException
public ClockDomainParser(FlattenedEdifCell flatCell,
EdifCellInstanceGraph ecic)
throws InvalidEdifNameException
flatCell - The FlattenedEdifCell to analyzeecic - The previously generated EdifCellInstanceGraph graph to avoid
having to do it again
InvalidEdifNameException
public ClockDomainParser(java.lang.String fileName,
java.lang.String[] dirs,
java.lang.String[] files)
throws EdifException,
ParseException,
java.io.FileNotFoundException
fileName - The name of the EDIF file that will be parsed and
flattened.
EdifException
ParseException
java.io.FileNotFoundException| Method Detail |
|---|
public void setOutput(java.io.PrintStream out)
private void init(FlattenedEdifCell flatCell)
throws InvalidEdifNameException
flatCell - The FlattenedEdifCell to analyze.
InvalidEdifNameExceptionprivate boolean isSequential(EdifCell cell)
cell - The name of the cell to check
private boolean hasAsynchronousReset(EdifCell cell)
cell - The name of the cell to check
private boolean isClockDriver(EdifCell cell)
cell - The name of the cell to check
protected java.util.Map<EdifNet,java.util.Set<EdifNet>> classifyNets()
protected java.util.Map<EdifNet,java.util.Set<EdifCellInstance>> classifyECIs()
protected SCCDepthFirstSearch doSCCAnalysis(boolean noIOBFB)
noIOBFB - Boolean value indicating whether or not to exclude IOBs as
feedback paths.
protected java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getClockCrossings()
protected java.util.Map<EdifNet,java.util.Set<EdifCellInstance>> getAsynchronousResets()
protected void analyzeSCCs(SCCDepthFirstSearch scc)
scc - The SCC to analyzeoutput - The PrintStream to write the summary topublic static java.lang.String getVersionInfo()
public java.util.Map<EdifNet,java.util.Set<EdifCellInstance>> getECIMap()
public static void main(java.lang.String[] args)
throws ParseException,
java.io.FileNotFoundException,
EdifException
ParseException
java.io.FileNotFoundException
EdifExceptionpublic void parseCommandlineOptions(com.martiansoftware.jsap.JSAPResult result)
public void exec(java.io.PrintStream out)
private void showAsync(java.util.Set<EdifNet> clocks,
boolean async,
boolean async_reset,
boolean async_reset_cells)
private void showDottyGraph()
private void showClockCrossings()
private void showSyncronous(java.util.Set<EdifNet> clocks)
private void showCells(java.util.Set<EdifNet> clocks)
private void showNets(java.util.Set<EdifNet> clocks)
private void show_gated_clocks()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||