byucc.jhdl.base
Class CL

java.lang.Object
  extended bybyucc.jhdl.base.Nameable
      extended bybyucc.jhdl.base.Node
          extended bybyucc.jhdl.base.Cell
              extended bybyucc.jhdl.base.CL
All Implemented Interfaces:
BooleanFlags, byucc.jhdl.base.Propagateable, TreeListable
Direct Known Subclasses:
bufcf, bufcf, buffclk, bufg, bufg, bufg, bufg, bufg, bufge, bufgls, bufgmux, bufgmux_1, bufgs, ClockDriver, DL_ONE, DL_ZERO, ibuf, ibuf, ibuf, ibuf, ibuf_agp, ibuf_agp, ibuf_ctt, ibuf_ctt, ibuf_gtl, ibuf_gtl, ibuf_gtlp, ibuf_gtlp, ibuf_hstl_i, ibuf_hstl_i, ibuf_hstl_iii, ibuf_hstl_iii, ibuf_hstl_iv, ibuf_hstl_iv, ibuf_lvcmos2, ibuf_lvcmos2, ibuf_lvttl, ibuf_pci33_3, ibuf_pci33_3, ibuf_pci33_5, ibuf_pci33_5, ibuf_pci66_3, ibuf_pci66_3, ibuf_sstl2_i, ibuf_sstl2_i, ibuf_sstl2_ii, ibuf_sstl2_ii, ibuf_sstl3_i, ibuf_sstl3_i, ibuf_sstl3_ii, ibuf_sstl3_ii, ibufds, ibufds_blvds_25, ibufds_diff_out, ibufds_ldt_25, ibufds_lvds_25, ibufds_lvds_25_dci, ibufds_lvds_33, ibufds_lvds_33_dci, ibufds_lvdsext_25, ibufds_lvdsext_25_dci, ibufds_lvdsext_33, ibufds_lvdsext_33_dci, ibufds_lvpecl_25, ibufds_lvpecl_33, ibufds_ulvds_25, ibufg, ibufg, ibufg, ibufg_agp, ibufg_agp, ibufg_agp, ibufg_ctt, ibufg_ctt, ibufg_ctt, ibufg_gtl, ibufg_gtl, ibufg_gtl, ibufg_gtlp, ibufg_gtlp, ibufg_gtlp, ibufg_hstl_i, ibufg_hstl_i, ibufg_hstl_i, ibufg_hstl_iii, ibufg_hstl_iii, ibufg_hstl_iii, ibufg_hstl_iv, ibufg_hstl_iv, ibufg_hstl_iv, ibufg_lvcmos2, ibufg_lvcmos2, ibufg_lvcmos2, ibufg_lvttl, ibufg_pci33_3, ibufg_pci33_3, ibufg_pci33_3, ibufg_pci33_5, ibufg_pci33_5, ibufg_pci33_5, ibufg_pci66_3, ibufg_pci66_3, ibufg_pci66_3, ibufg_sstl2_i, ibufg_sstl2_i, ibufg_sstl2_i, ibufg_sstl2_ii, ibufg_sstl2_ii, ibufg_sstl2_ii, ibufg_sstl3_i, ibufg_sstl3_i, ibufg_sstl3_i, ibufg_sstl3_ii, ibufg_sstl3_ii, ibufg_sstl3_ii, ibufgds, ibufgds_lvds_25, ibufgds_lvdsext_25, inc4, inv, inv, inv, inv, ipad_sim, ipad_sim, ipad_sim, ipad_sim, md0, md1, md2, mult_and, mult_and, mult18x18, muxcy, muxcy, muxcy_d, muxcy_d, muxcy_l, muxcy_l, muxf5, muxf5, muxf5_d, muxf5_d, muxf5_l, muxf5_l, muxf6, muxf6, muxf6_d, muxf6_d, muxf6_l, muxf6_l, muxf7, muxf7_d, muxf7_l, muxf8, muxf8_d, muxf8_l, oand2, obuf, obuf, obuf, obuf, obuf_agp, obuf_agp, obuf_ctt, obuf_ctt, obuf_f_12, obuf_f_12, obuf_f_16, obuf_f_16, obuf_f_2, obuf_f_2, obuf_f_24, obuf_f_24, obuf_f_4, obuf_f_4, obuf_f_6, obuf_f_6, obuf_f_8, obuf_f_8, obuf_gtl, obuf_gtl, obuf_gtlp, obuf_gtlp, obuf_hstl_i, obuf_hstl_i, obuf_hstl_iii, obuf_hstl_iii, obuf_hstl_iv, obuf_hstl_iv, obuf_lvcmos2, obuf_lvcmos2, obuf_lvttl_f_12, obuf_pci33_3, obuf_pci33_3, obuf_pci33_5, obuf_pci33_5, obuf_pci66_3, obuf_pci66_3, obuf_s_12, obuf_s_12, obuf_s_16, obuf_s_16, obuf_s_2, obuf_s_2, obuf_s_24, obuf_s_24, obuf_s_4, obuf_s_4, obuf_s_6, obuf_s_6, obuf_s_8, obuf_s_8, obuf_sstl2_i, obuf_sstl2_i, obuf_sstl2_i_dci, obuf_sstl2_ii, obuf_sstl2_ii, obuf_sstl3_i, obuf_sstl3_i, obuf_sstl3_ii, obuf_sstl3_ii, obufds, obufds_lvds_25, obufds_lvdsext_25, omux2, onand2, onor2, oor2, opad_sim, opad_sim, opad_sim, opad_sim, orcy, oxnor2, oxor2, PullUpDown, SimulationBuffer, SimulationBuffer, SimulationBuffer, SimulationBuffer, tdi, tdo, tera_add, tera_buf, tera_high, tera_low, wand, wor2and, xorcy, xorcy, xorcy_d, xorcy_d, xorcy_l, xorcy_l

public abstract class CL
extends Cell
implements byucc.jhdl.base.Propagateable

This can be used as a super-class for a cell that is purely combinational.

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
CL(Node parent)
          Basic constructor for a CL node that takes a parent.
CL(Node parent, java.lang.String name)
          Basic constructor for a CL node that takes a parent and a name.
 
Method Summary
 boolean behavioralModelIsAvailable()
          Used to tell if a cell has a behavioral model associated with it.
protected  boolean defaultSimulationModelIsBehavioral()
          Whether the cell should be simulated behaviorally
 boolean hasBeenTraced()
          Used to mark if something has been traced, to avoid infinite tracing loops.
 boolean hasBeenTraced(boolean flag)
          Used to set whether something has been traced, to avoid infinite tracing loops.
 boolean hasBehaviorInClockMethod()
          A CL cell is never behaviorally clocked
 boolean hasBehaviorInPropagateMethod()
          A CL cell always has a behavioral propagate method
 boolean isAsynchronouslyScheduled()
          The levelized simulator uses this to keep track of what has been levelized (put on the propagate list thus far.
 boolean isAsynchronouslyScheduled(boolean is_scheduled)
          Used to mark something as put on the propagate list.
 boolean isReadyToBeAsynchronouslyScheduled()
          A CL node is ready to put on the list when all of its input wires are marked (on the Propagate list), or if it is not being behaviorally modeled.
 boolean needsToBeAsynchronouslyScheduled()
          CL nodes must always be propagated unless global behavioral modeling is disabled.
 void propagate()
          Used for things that are combinationally propagated like combinational logic and Wires and such.
 
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, 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

CL

public CL(Node parent,
          java.lang.String name)
Basic constructor for a CL node that takes a parent and a name. In the default, the simulation model for a CL node is enabled unless an antecedant is being modeled.

Parameters:
parent - your parent.
name - your name.

CL

public CL(Node parent)
Basic constructor for a CL node that takes a parent.

Parameters:
parent - your parent.
Method Detail

isReadyToBeAsynchronouslyScheduled

public boolean isReadyToBeAsynchronouslyScheduled()
A CL node is ready to put on the list when all of its input wires are marked (on the Propagate list), or if it is not being behaviorally modeled.

Specified by:
isReadyToBeAsynchronouslyScheduled in interface byucc.jhdl.base.Propagateable
Returns:
true if ready to go on the list, false otherwise.

needsToBeAsynchronouslyScheduled

public boolean needsToBeAsynchronouslyScheduled()
CL nodes must always be propagated unless global behavioral modeling is disabled.

Specified by:
needsToBeAsynchronouslyScheduled in interface byucc.jhdl.base.Propagateable
Specified by:
needsToBeAsynchronouslyScheduled in class Cell
Returns:
true if it needs to be propagated, false otherwise.

behavioralModelIsAvailable

public boolean behavioralModelIsAvailable()
Used to tell if a cell has a behavioral model associated with it.

Overrides:
behavioralModelIsAvailable in class Cell
Returns:
true by default

defaultSimulationModelIsBehavioral

protected boolean defaultSimulationModelIsBehavioral()
Whether the cell should be simulated behaviorally

Overrides:
defaultSimulationModelIsBehavioral in class Cell
Returns:
true by default

hasBehaviorInClockMethod

public final boolean hasBehaviorInClockMethod()
A CL cell is never behaviorally clocked

Specified by:
hasBehaviorInClockMethod in class Cell
Returns:
false

hasBehaviorInPropagateMethod

public final boolean hasBehaviorInPropagateMethod()
A CL cell always has a behavioral propagate method

Specified by:
hasBehaviorInPropagateMethod in class Cell
Returns:
true

propagate

public void propagate()
Used for things that are combinationally propagated like combinational logic and Wires and such.


isAsynchronouslyScheduled

public boolean isAsynchronouslyScheduled()
The levelized simulator uses this to keep track of what has been levelized (put on the propagate list thus far.

Returns:
true if it is on the list

isAsynchronouslyScheduled

public boolean isAsynchronouslyScheduled(boolean is_scheduled)
Used to mark something as put on the propagate list.

Returns:
the prior value of the flag

hasBeenTraced

public boolean hasBeenTraced()
Used to mark if something has been traced, to avoid infinite tracing loops.

Returns:
true if has been traced, false otherwise

hasBeenTraced

public boolean hasBeenTraced(boolean flag)
Used to set whether something has been traced, to avoid infinite tracing loops.

Parameters:
flag - value to set flag to
Returns:
the prior value of the flag, useful for caching and restoring


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