byucc.jhdl.Logic
Class LibrarySelfTester

java.lang.Object
  extended bybyucc.jhdl.base.Nameable
      extended bybyucc.jhdl.base.Node
          extended bybyucc.jhdl.base.Cell
              extended bybyucc.jhdl.base.Structural
                  extended bybyucc.jhdl.Logic.LogicGates
                      extended bybyucc.jhdl.Logic.LogicStatic
                          extended bybyucc.jhdl.Logic.Logic
                              extended bybyucc.jhdl.Logic.LibrarySelfTester
All Implemented Interfaces:
BooleanFlags, Clockable, byucc.jhdl.base.Propagateable, TestBench, TreeListable
Direct Known Subclasses:
TESTCSRCLibrary, TESTTERALibrary, TESTVirtex2Library, TESTVirtexLibrary, TESTXC4000Library, TESTXC9000Library, TESTXilinxLibrary, Virtex2LibrarySelfTester

public abstract class LibrarySelfTester
extends Logic
implements TestBench

This class aids in testing components of a library. By extending this class, a library can efficiently run built-in test vectors.


Field Summary
 
Fields inherited from class byucc.jhdl.Logic.Logic
ABOVE, ALIGN_BOTTOM, ALIGN_CENTER, ALIGN_LEFT, ALIGN_LSB, ALIGN_MSB, ALIGN_RIGHT, ALIGN_TOP, BELOW, DOWN, EAST_OF, LEFT_OF, MAX_PACK, NORTH_OF, ON, ONTOP, ONTOP_OF, RIGHT_OF, SOUTH_OF, TOLEFT, TORIGHT, UNCONSTRAINED, UP, WEST_OF
 
Fields inherited from class byucc.jhdl.Logic.LogicGates
tech_mapper
 
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
LibrarySelfTester()
          Creates a new LibrarySelfTester.
LibrarySelfTester(int verbosity)
          Creates a new LibrarySelfTester, with specified verbosity.
 
Method Summary
 void clock()
          Performs the clock-by-clock test behavior of the library test.
 void fullTest(java.lang.String[] argv)
          Uses reflection to run the static test() method of various cells in the library.
protected abstract  java.lang.String getLibraryPackageName()
          Determines the package of the library, no ending period.
protected abstract  TechMapper getLibraryTechMapper()
          Returns the correct type of techmapper.
 java.lang.String getSyntax()
          This gives the acceptable command-line syntax for this version of self-tester.
protected abstract  java.lang.String[] getTestlist()
          This returns a list of classes to test.
static void main(java.lang.String[] argv)
          Runs the full library test.
 void reset()
          Performs the reset cycle test behavior of the library test.
 void setCell(Cell c)
          Initializes the test vectors for the given cell.
static void setTechMapping(boolean flag)
          Sets techmapping enabling during tests (default on).
 void setVector(java.lang.String name, int[][] arr, Wire wire)
          Sets the contents of the test vector for the port identified by the String parameter.
 void setVector(java.lang.String name, int[] arr, Wire wire)
          Sets the contents of the test vector for the port identified by the String parameter.
 void setVector(java.lang.String name, long[] arr, Wire wire)
          Sets the contents of the test vector for the port identified by the String parameter.
 void setVector(java.lang.String name, java.lang.String[] arr, Wire wire)
          Sets the contents of the test vector for the port identified by the String parameter.
 boolean test()
          Runs the test specified by the vectors given with the setVector calls, using the cell given in the setCell initialization.
static boolean testingFullLibrary()
          Method to query whether full library or single class is being tested.
static void testOK(boolean b)
          Method to inform the tester of test status.
static void verboseMode(int level)
          Sets the verbosity mode of the tester. 0 = quiet (minimal summary) 1 = moderate (name of each class tested, but no more) 2 = verbose (each class test is verbose)
 
Methods inherited from class byucc.jhdl.Logic.Logic
clockDriver, clockDriver, connect_implicit_ports, connectImplicitPorts, constructSubCell, constructSubCellNoImplicitPorts, enableNewPlacement, enableNewPlacement, extend, extend, getDefaultClock, getDefaultTechMapper, getGlobalClock, getSinkCell, getSourceCell, getSourceCell, getSourceLeaf, getSourcePlaceable, getSourcePlaceableLeaf, getSubCellClass, getTechMapHint, getTechMapHint, getTechMapper, growAndShiftl, lockChildPlacement, lsb, lsb, map, map, map, map, map, map, map, map, map, map, map, map, map, map, map, map, map, map, map, msb, msb, msbIndx, netlist, netlist, netlist, netlist, netlist, netlist, netlist, netlist, padClock_o, padClock_o, padClock_o, padClock, padClock, padClock, padIn_o, padIn_o, padIn_o, padIn, padIn, padIn, padInout_o, padInout_o, padInout_o, padInout, padInout, padInout, padOut_o, padOut_o, padOut_o, padOut, padOut, padOut, padOutT_o, padOutT_o, padOutT_o, padOutT, padOutT, padOutT, place, place, place, place, place, place, place, place, place, place, place, place, place, place, place, place, place, printTechMapHints, range, rotate, rotate, scale, scale, setBBox, setDefaultTechMapper, setFloorPlannerIsMaster, setTechMappingEnabled, setWandH, signExtend_o, signExtend, signExtend, sink, source, takeBot_o, takeBot, takeBot, takeBotSigned_o, takeBotSigned, takeTop_o, takeTop, takeTop, techmap, techMappingEnabled, translate, translate, zeroExtend_o, zeroExtend, zeroExtend, zeroExtendRight_o, zeroExtendRight
 
Methods inherited from class byucc.jhdl.Logic.LogicStatic
add_o, add_o, and_o, and_o, and, and, buf_o, buf_o, buf, buf, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, constant_o, constant_o, constant_o, constant_o, constant_o, constant_o, constant_o, constant_o, constant, constant, constant, constant, constant, constant, constant, constant, constant, constant, gnd_o, gnd_o, gnd, gnd, gnd, gnd, mux_o, mux, nc, nc, nc, nc, nc, nc, not_o, not_o, not, not, or_o, or_o, or, or, reg_o, reg, vcc_o, vcc_o, vcc, vcc, vcc, vcc, wire, wire, wire, wire, xnor_o, xnor_o, xnor, xor_o, xor
 
Methods inherited from class byucc.jhdl.Logic.LogicGates
add_o, add_o, add_o, add_o, add_o, add_o, add, add, add, add, addsub_o, addsub_o, addsub_o, addsub_o, addsub_o, addsub_o, addsub, addsub, addsub, addsub, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and_o, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, and, ashiftr_o, ashiftr, ashiftr, buf_o, buf_o, buf, buf, checkValueRepresentableInWidth, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat_o, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, concat, constant_o, constant_o, constant_o, constant_o, constant_o, constant_o, constant_o, constant_o, constant, constant, constant, constant, constant, constant, constant, constant, constant, constant, gnd_o, gnd_o, gnd, gnd, gnd, gnd, mux_o, mux_o, mux_o, mux_o, mux_o, mux_o, mux, mux, mux, mux, mux, mux, name, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand_o, nand, nand, nand, nand, nand, nand, nand, nand, nand, nand, nand, nand, nand, nand, nand, nand, nand, nand, nc, nc, nc, nc, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor_o, nor, nor, nor, nor, nor, nor, nor, nor, nor, nor, nor, nor, nor, nor, nor, nor, nor, nor, not_o, not_o, not, not, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or_o, or, or, or, or, or, or, or, or, or, or, or, or, or, or, or, or, or, or, pulldown, pulldown, pullup, pullup, reg_o, reg_o, reg_o, reg_o, reg, reg, reg, reg, regc_o, regc_o, regc_o, regc_o, regc, regc, regc, regc, regce_o, regce_o, regce_o, regce_o, regce, regce, regce, regce, regp_o, regp_o, regp_o, regp_o, regp, regp, regp, regp, regpe_o, regpe_o, regpe_o, regpe_o, regpe, regpe, regpe, regpe, regr_o, regr_o, regr_o, regr_o, regr, regr, regr, regr, regre_o, regre_o, regre_o, regre_o, regre, regre, regre, regre, regs_o, regs_o, regs_o, regs_o, regs, regs, regs, regs, regse_o, regse_o, regse_o, regse_o, regse, regse, regse, regse, shiftl_o, shiftl, shiftl, shiftr_o, shiftr, shiftr, sub_o, sub_o, sub_o, sub_o, sub_o, sub_o, sub, sub, sub, sub, tbuf_o, tbuf_o, tbuf, tbuf, vcc_o, vcc_o, vcc, vcc, vcc, vcc, wire, wire, wire, wire, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor_o, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xnor, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor_o, xor, xor, xor, xor, xor, xor, xor, xor, xor, xor, xor, xor, xor, xor, xor, xor, xor, xor
 
Methods inherited from class byucc.jhdl.base.Structural
behavioralModelIsAvailable, clockMethodIsDisabled, clockMethodIsDisabled, clockMethodIsEnabled, clockMethodIsEnabled, defaultSimulationModelIsBehavioral, hasBeenTraced, hasBeenTraced, hasBehaviorInClockMethod, hasBehaviorInPropagateMethod, isAsynchronouslyScheduled, isAsynchronouslyScheduled, isFallingEdgeTriggered, isReadyToBeAsynchronouslyScheduled, isRisingEdgeTriggered, needsToBeAsynchronouslyScheduled, needsToBeClocked, propagate, propagateMethodIsDisabled, propagateMethodIsDisabled, propagateMethodIsEnabled, propagateMethodIsEnabled, willUseHWUpdate, willUseHWUpdate
 
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, 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, 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, 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

LibrarySelfTester

public LibrarySelfTester()
Creates a new LibrarySelfTester.


LibrarySelfTester

public LibrarySelfTester(int verbosity)
Creates a new LibrarySelfTester, with specified verbosity.

Method Detail

testOK

public static final void testOK(boolean b)
Method to inform the tester of test status.

Parameters:
b - true if current test passed.

testingFullLibrary

public static final boolean testingFullLibrary()
Method to query whether full library or single class is being tested.


verboseMode

public static void verboseMode(int level)
Sets the verbosity mode of the tester.

Parameters:
level - The new verbosity level of the tester.

setTechMapping

public static void setTechMapping(boolean flag)
Sets techmapping enabling during tests (default on). Must be called before calling the constructor of the tester that is a cell's parent.

Parameters:
flag - the new value of techmap enabling

setCell

public void setCell(Cell c)
Initializes the test vectors for the given cell.

Parameters:
c - The cell to be used in the next simulation run.

setVector

public void setVector(java.lang.String name,
                      int[] arr,
                      Wire wire)
Sets the contents of the test vector for the port identified by the String parameter. The port name must correspond to one of the ports of the cell given in the setCell() initialization. This version of setVector can only be used for ports with 32 bits or less.

Parameters:
name - The name of the port to be associated with this vector of data.
arr - The array of ints to be used to drive the port.
Throws:
TestException - if vector lengths clash or port not found.

setVector

public void setVector(java.lang.String name,
                      long[] arr,
                      Wire wire)
Sets the contents of the test vector for the port identified by the String parameter. The port name must correspond to one of the ports of the cell given in the setCell() initialization. This version of setVector can only be used for ports with 64 bits or less.

Parameters:
name - The name of the port to be associated with this vector of data.
arr - The array of longs to be used to drive the port.
Throws:
TestException - if vector lengths clash or port not found.

setVector

public void setVector(java.lang.String name,
                      int[][] arr,
                      Wire wire)
Sets the contents of the test vector for the port identified by the String parameter. The port name must correspond to one of the ports of the cell given in the setCell() initialization. This version of setVector can be used for ports with any width port.

Parameters:
name - The name of the port to be associated with this vector of data.
arr - The 2-D array of ints to be used to drive the port.
Throws:
TestException - if vector lengths clash or port not found.

setVector

public void setVector(java.lang.String name,
                      java.lang.String[] arr,
                      Wire wire)
Sets the contents of the test vector for the port identified by the String parameter. The port name must correspond to one of the ports of the cell given in the setCell() initialization. This version of setVector can be used for ports with any width port.

Parameters:
name - The name of the port to be associated with this vector of data.
arr - The array of Strings parseable by BV to be used to drive the port.
Throws:
TestException - if vector lengths clash or port not found.

test

public boolean test()
Runs the test specified by the vectors given with the setVector calls, using the cell given in the setCell initialization.

Returns:
true if test was successful.
Throws:
TestException - if test cannot be started.

clock

public void clock()
Performs the clock-by-clock test behavior of the library test.

Specified by:
clock in interface Clockable
Overrides:
clock in class Structural

reset

public void reset()
Performs the reset cycle test behavior of the library test.

Specified by:
reset in interface Clockable
Overrides:
reset in class Structural

getLibraryPackageName

protected abstract java.lang.String getLibraryPackageName()
Determines the package of the library, no ending period.

Returns:
the package name, such as "byucc.jhdl.Xilinx"

getLibraryTechMapper

protected abstract TechMapper getLibraryTechMapper()
Returns the correct type of techmapper.

Returns:
the correct techmapper for this library.

main

public static void main(java.lang.String[] argv)
Runs the full library test. The list of cells to test is maintained in a private String array. After each cell test, the testOK flag is checked to see if the test passed. Each test is run twice, once with Logic.techMappingEnabled = true, once with Logic.techMappingEnabled false, to validate both the structure and the behavioral model of the cell, if any.


fullTest

public final void fullTest(java.lang.String[] argv)
Uses reflection to run the static test() method of various cells in the library. This is designed to be used to parse the arguments given to a main() method in the respective library tester, and accepts the syntax:
[-v[{0|1|2}]] [startindex [stopindex]]
-v determines verbosity, default is level 0 (see verboseMode). startindex and stopindex allow the testing of a subset of the testlist.

Parameters:
argv - parameters to parse regarding verbosity, test ranges.
Throws:
TestException - if any test fails, or arguments cannot be parsed.

getTestlist

protected abstract java.lang.String[] getTestlist()
This returns a list of classes to test. The classes should not include any package information; for example, byucc.jhdl.Xilinx.and2 should appear in the list as "and2".

Returns:
a list of classes to test in the current library.

getSyntax

public java.lang.String getSyntax()
This gives the acceptable command-line syntax for this version of self-tester.

Returns:
the command-line syntax of the test.


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