byucc.jhdl.synth
Class Synthesize

java.lang.Object
  extended bybyucc.jhdl.synth.Synthesize

public class Synthesize
extends java.lang.Object


Field Summary
static boolean DEBUG_SYNTHESIS
           
 
Constructor Summary
Synthesize()
           
 
Method Summary
static java.io.InputStream getInputStreamForClass(java.lang.String className)
           
static void graphToJHDL(Logic parent, DataFlowGraph graph)
          Create JHDL circuitry to perform the behavior described by a DataFlowGraph.
static void main(java.lang.String[] args)
          main just exists for testing much of the code in Synthesize.
static void synthesizeBehaviorWithinCell(Logic parent)
          Perform complete synthesis of the behavioral model of the given Logic cell.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEBUG_SYNTHESIS

public static final boolean DEBUG_SYNTHESIS
See Also:
Constant Field Values
Constructor Detail

Synthesize

public Synthesize()
Method Detail

main

public static void main(java.lang.String[] args)
main just exists for testing much of the code in Synthesize. This method simply reads a class name from args[0] and will generate the ControlFlowGraph and DataFlowGraph for the propagate method of that class. If a second argument (ie. output.dot) is given on the command-line then the DataFlowGraph will be written to that file, while the ControlFlowGraph will be written to a similarly named file, (ie. output_control.dot). If only a single argument is given on the command-line then the graphs will be printed on System.out.

Parameters:
args - An array of arguments: args[0] is mandatory and should be afully qualified class name such as "byucc.jhdl.synth.test.TestClass". This class should have a static method: public static Logic construct() that will construct and return a new instance of itself. (I would have used an interface to force the existence of this method, but unfortunately, Java does not allow any static methods in interfaces.) args[1] is optional and should be the name of an output file, (ie. output.dot).

synthesizeBehaviorWithinCell

public static void synthesizeBehaviorWithinCell(Logic parent)
Perform complete synthesis of the behavioral model of the given Logic cell. This is the top-level method in Synthesize that will be called from other parts of JHDL. The result of calling this method is that cells and wires will be instantiated within parent to perform the behavior described in the behavioral model of the cell. The behavioral model can consist of the propagate method; the clock and reset methods; or all three.

Parameters:
parent - The parent cell which has the behavior to be synthesized and will also be the parent of the new synthesized circuitry.

graphToJHDL

public static void graphToJHDL(Logic parent,
                               DataFlowGraph graph)
Create JHDL circuitry to perform the behavior described by a DataFlowGraph. All circuitry will be created with the given Cell as its parent. This method creates a wire for all signals and all edges between two operators with no signal. Finally, it examines each operator and makes a Logic call for each operator. The operation name for each operator must correspond to a Logic call with the same number of parameters as input edges to the operator. If not, this method will throw a SynthesisException.

Parameters:
parent - The parent cell for the new circuitry
graph - The dataflow graph representing the logic to be created

getInputStreamForClass

public static java.io.InputStream getInputStreamForClass(java.lang.String className)


Copyright ? 2006 Brigham Young University, Configurable Computing Laboratory. All Rights Reserved.