byucc.jhdl.base
Class PullUpDown

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.PullUpDown
All Implemented Interfaces:
BooleanFlags, byucc.jhdl.base.Propagateable, TreeListable
Direct Known Subclasses:
keeper, keeper, pulldown, pulldown, pulldown, pulldown, pullup, pullup, pullup, pullup

public abstract class PullUpDown
extends CL

Author:
Brad L. Hutchings This implements a pullup or pulldown (as requested by the user) on a wire. The basic idea is that this element only propagates itself last and only if nobody else has sourced a value onto a wire. Necessary to implement tristate. They are only allowed to source a single wire (no fanout!).

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 PullUpDown(Node parent)
          Constructs an unnamed pullup or pulldown
protected PullUpDown(Node parent, java.lang.String name)
          Constructs a named pullup or pulldown
 
Method Summary
 Wire connect(java.lang.String name, Wire w)
          Does some extra wire checking before calling the super method that actually does the work.
 void connectAllWires(ArgBlockList arg_list)
          Wires up all of the wires in the ArgBlockList to all of the named ports using the associations given them when they were put in the ArgBlockList.
abstract  int getOutputValue()
          Must be defined to be an integer value by the user.
 boolean isReadyToBeAsynchronouslyScheduled()
          pull-up/down cells can go on the list when all other sources for their output wire are already on the list.
 void propagate()
          PullUp/Down cells only propagate if nobody else has propagated to their output wire.
 
Methods inherited from class byucc.jhdl.base.CL
behavioralModelIsAvailable, defaultSimulationModelIsBehavioral, hasBeenTraced, hasBeenTraced, hasBehaviorInClockMethod, hasBehaviorInPropagateMethod, isAsynchronouslyScheduled, isAsynchronouslyScheduled, needsToBeAsynchronouslyScheduled
 
Methods inherited from class byucc.jhdl.base.Cell
addPort, addPorts, addProperties, addProperties, addProperty, addProperty, addProperty, addProperty, antecedantIsBehaviorallyModeled, antecedantIsBehaviorallyModeled, bind, bind, bind, bind, cellInterfaceDeterminesUniqueNetlistStructure, clk, connectOptional, constructSubCell, constructSubCellNoImplicitPorts, disableAllBehavioralModels, disableBehavioralModel, enableBehavioralModel, getArgument, getAttachedPort, getAttachedWire, getAttachedWireNoException, getCellName, 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, postorderCheck, preorderCheck, 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, toString, 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

PullUpDown

protected PullUpDown(Node parent,
                     java.lang.String name)
Constructs a named pullup or pulldown

Parameters:
parent - the parent node
name - the pullup/down name

PullUpDown

protected PullUpDown(Node parent)
Constructs an unnamed pullup or pulldown

Parameters:
parent - the parent node
Method Detail

getOutputValue

public abstract int getOutputValue()
Must be defined to be an integer value by the user.

Returns:
the value that will be placed on the PullUp/Down's output wire.

connect

public final Wire connect(java.lang.String name,
                          Wire w)
Does some extra wire checking before calling the super method that actually does the work. You are only allowed to connect a single wire that is of atomic width.

Overrides:
connect in class Cell
Parameters:
name - the port to connect
w - the wire to connect
Returns:
the aliased wire that results from the connection

connectAllWires

public void connectAllWires(ArgBlockList arg_list)
Description copied from class: Cell
Wires up all of the wires in the ArgBlockList to all of the named ports using the associations given them when they were put in the ArgBlockList. Any non-wires are completely ignored and must be handled manually.

Overrides:
connectAllWires in class Cell
Parameters:
arg_list - all of the wire-port associations that need to be carried out. May also contain any other argument bindings to be handled manually by the user.
See Also:
ArgBlockList

isReadyToBeAsynchronouslyScheduled

public final boolean isReadyToBeAsynchronouslyScheduled()
pull-up/down cells can go on the list when all other sources for their output wire are already on the list.

Specified by:
isReadyToBeAsynchronouslyScheduled in interface byucc.jhdl.base.Propagateable
Overrides:
isReadyToBeAsynchronouslyScheduled in class CL
Returns:
true when ready to put on the list.

propagate

public final void propagate()
PullUp/Down cells only propagate if nobody else has propagated to their output wire.



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