byucc.jhdl.base
Class DynamicClockDriver

java.lang.Object
  extended bybyucc.jhdl.base.Nameable
      extended bybyucc.jhdl.base.Node
          extended bybyucc.jhdl.base.Cell
              extended bybyucc.jhdl.base.CL
                  extended bybyucc.jhdl.base.ClockDriver
                      extended bybyucc.jhdl.base.DynamicClockDriver
All Implemented Interfaces:
BooleanFlags, byucc.jhdl.base.Propagateable, TreeListable, UndrivenInputsAllowable

public class DynamicClockDriver
extends ClockDriver

Class used to create clock drivers. User's specify the schedule for the clock driver using a String of 1s and 0s.

Author:
Brad Hutchings

Field Summary
 
Fields inherited from class byucc.jhdl.base.Cell
BOOLEAN, CELL_NAME_DECLARATION, CellInterfaceDeterminesUniqueNetlistStructure, DETERMINE_FROM_STRING, GENERICS_DECLARATION, implicit_interface, IMPLICIT_INTERFACE_DECLARATION, INTEGER, INTERFACE_DECLARATION, LONG, PORT_IOS_DECLARATION, PORT_NAMES_DECLARATION, PORT_NET_NAMES_DECLARATION, PORT_PROPERTIES, PORT_WIDTHS_DECLARATION, SIGN_EXT, STRING, ZERO_PAD
 
Fields inherited from interface byucc.jhdl.base.BooleanFlags
ANTECEDANT_IS_BEHAVIORALLY_MODELED, ASYNC_PORT, ASYNCHRONOUS_RESOLVED, ATOMICALLY_PLACEABLE, ATOMICALLY_UNMAPPABLE, BEHAVIORALLY_MODELED_BRANCH, CLK_PORT, CLOCK_METHOD_IMPLEMENTED_BY_USER, CLOCK_METHOD_IS_DISABLED, CLOCKABLE_IS_SCHEDULED, DANGLING_IS_OK, DELETE_MARK, FATAL_BUILD_ERROR_OCCURED, HAS_BEEN_TRACED, HAS_USER_SPECIFIED_NAME, HWUPDATE, IMPLICIT_PORT, IN_CLK_PORT, IN_PORT, INOUT_PORT, IO_TYPE_FLAGS, IS_BEHAVIORALLY_MODELED, IS_ON_BUILD_STACK, IS_ON_PROP_LIST, IS_PLACED, METHODS_IMPLEMENTED_BY_USER, NETLISTABLE, ORIG_WIRE_IS_ATOMIC, OUT_PORT, PLACEMENT_IS_LOCKED, PROPAGATE_METHOD_IMPLEMENTED_BY_USER, PROPAGATE_METHOD_IS_DISABLED, RECURSION_FLAG, RESET_METHOD_IMPLEMENTED_BY_USER, SIMULATEABLE, SOURCELESS_IS_OK, SYNC_PORT, VISIBLE
 
Constructor Summary
protected DynamicClockDriver(Node parent, Wire clock_wire, boolean rising, java.lang.String name)
          Main constructor for class.
 
Method Summary
 java.lang.String getCellName()
          The name of this cell
protected  int getScheduledValue(int schedule_index)
          Returns the integer value for the ClockDriver for that time index of its schedule.
 Wire getWatchedWire()
          Returns the watched wire of this dynamic driver
 boolean needsToBeAsynchronouslyScheduled()
          Because this is currently a CL -- may change in the future (probably).
protected  boolean postorderCheck()
          Used to check validity of this cell after recursing down.
protected  boolean preorderCheck()
          These two functions exist to allow this cell not to be bothered by netlisting.
 void propagate()
          Propagates the wire - this does nothing
 
Methods inherited from class byucc.jhdl.base.ClockDriver
determineSchedule, getSchedule, portMayBeUndriven, toString
 
Methods inherited from class byucc.jhdl.base.CL
behavioralModelIsAvailable, defaultSimulationModelIsBehavioral, hasBeenTraced, hasBeenTraced, hasBehaviorInClockMethod, hasBehaviorInPropagateMethod, isAsynchronouslyScheduled, isAsynchronouslyScheduled, isReadyToBeAsynchronouslyScheduled
 
Methods inherited from class byucc.jhdl.base.Cell
addPort, addPorts, addProperties, addProperties, addProperty, addProperty, addProperty, addProperty, antecedantIsBehaviorallyModeled, antecedantIsBehaviorallyModeled, bind, bind, bind, bind, cellInterfaceDeterminesUniqueNetlistStructure, clk, connect, connectAllWires, connectOptional, constructSubCell, constructSubCellNoImplicitPorts, disableAllBehavioralModels, disableBehavioralModel, enableBehavioralModel, getArgument, getAttachedPort, getAttachedWire, getAttachedWireNoException, getCellNetlist, getCellNetList, getCellNetlist, getCellNetlist, getDescendents, getFlatNetlist, getFlatNetlistableChildren, getGeneric, getHeight, getNetlistableChildren, getPlacementInfo, getPortProperties, getPortRecord, getPortRecords, getProperties, getProperty, getPropertyValue, getSinkWires, getSourceWires, getSubCellClass, getUniqueCellName, getWidth, getX, getY, hasPort, hasPorts, in, in, inout, inout, isAsynchronousSourceSinkResolved, isBehaviorallyModeled, isBehaviorallyModeledBranch, isInput, isLeafCell, isNetlistable, isNetlistable, isNetlistablePort, isNetlistLeaf, isNotNetlistable, isNotNetlistablePort, isNotVisible, isOutput, isPlaceable, isPlaceable, isPlaced, isPlaced, isPlacementLocked, isRoot, isSimulateable, isSimulateable, isSink, isSource, isVisible, isVisible, join, lockPlacement, nc, out, out, param, popHierarchy, port, port, port, pushHierarchy, pushHierarchy, pushHierarchy, pushHierarchy, pushHierarchyNoImplicitPorts, pushHierarchyNoImplicitPorts, removeAllUnconnectedPorts, removePort, removeProperty, replaceProperty, replaceProperty, resetBehavioralModelsToDefaults, setAsynchronousSourceSinkResolved, setGeneric, setHeight, setNotNetlistable, setNotNetlistable, setNotVisible, setNotVisible, setPlacementInfo, setPortNotNetlistable, setPortNotNetlistable, setProperty, setWidth, subClassDelete, uniquifyCell, userDefinedClockCount, verifyAndCleanup
 
Methods inherited from class byucc.jhdl.base.Node
addObservable, addSimulatorCallback, checkAll, delete, getBuildingFlag, getChildren, getChildrenEnumeration, getDefaultClock, getInstanceName, getParent, getParentCell, getRelatives, getSystem, getWires, optimize, orphanAllowed, printAllChildren, printTree, removeSimulatorCallback, setDefaultClock
 
Methods inherited from class byucc.jhdl.base.Nameable
caseSensitivity, caseSensitivity, disableNameClashChecking, getFullName, getFullNameNoTestBench, getHierNameNoTestBench, getInstanceNo, getInstanceNumber, getLeafName, getLeafName, getRelativeName, getUserName, getUserName, hasUserSpecifiedName, isDescendantOf, setInstanceNumber
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DynamicClockDriver

protected DynamicClockDriver(Node parent,
                             Wire clock_wire,
                             boolean rising,
                             java.lang.String name)
Main constructor for class.

Parameters:
parent - the parent of the clock driver.
clock_wire - the wire to watch
name - the name of the clock driver.
Method Detail

getCellName

public java.lang.String getCellName()
The name of this cell

Overrides:
getCellName in class Cell
Returns:
the cell name associated with a derived class, null if not declared.

getScheduledValue

protected int getScheduledValue(int schedule_index)
Returns the integer value for the ClockDriver for that time index of its schedule.

Overrides:
getScheduledValue in class ClockDriver
Parameters:
schedule_index - indicates what point of the schedule you are interested in.
Returns:
the scheduled driver value for the provided index.

preorderCheck

protected boolean preorderCheck()
These two functions exist to allow this cell not to be bothered by netlisting. This cell does not participate -- so please do not check it. It is NOT connected and it does not need to be. It does not have any ports, because it does not need any. Please It just wants to be allowed to float...

Overrides:
preorderCheck in class ClockDriver
Returns:
true if no errors occured, false otherwise.
See Also:
Cell#checkAllNodes().

postorderCheck

protected boolean postorderCheck()
Description copied from class: Cell
Used to check validity of this cell after recursing down. Removes any ported wires that are not used in children's ports, with no warning message. Extend this to check for more conditions.

Overrides:
postorderCheck in class Cell
Returns:
true if no errors occured, false otherwise.
See Also:
Node#checkAllNodes().

needsToBeAsynchronouslyScheduled

public boolean needsToBeAsynchronouslyScheduled()
Because this is currently a CL -- may change in the future (probably).

Specified by:
needsToBeAsynchronouslyScheduled in interface byucc.jhdl.base.Propagateable
Overrides:
needsToBeAsynchronouslyScheduled in class ClockDriver
Returns:
false

getWatchedWire

public Wire getWatchedWire()
Returns the watched wire of this dynamic driver

Returns:
the output wire

propagate

public void propagate()
Propagates the wire - this does nothing

Specified by:
propagate in interface byucc.jhdl.base.Propagateable
Overrides:
propagate in class ClockDriver


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