byucc.jhdl.contrib.modgen
Class downcnt

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.contrib.modgen.downcnt
All Implemented Interfaces:
BooleanFlags, Clockable, byucc.jhdl.base.Propagateable, TreeListable

public class downcnt
extends Logic

A generic sized down counter

Downcnt is a loadable, holdable down counter. The signal Term_cnt goes low when the counter contents are zero. All state changes occur on the rising edge. See the tables below for a better understanding on how this module works.
 

Clk_En
Load
Load_Data
Outnext
0
don't care
don't care
Out
1
0
don't care
Out - 1
1
1
data
data

 

 

Implementation

All Technologies

Downcnt implements a registered decrementer with a mux that selects between the decremented value, or the data on the load_data signal. The borrow-out of the decrementer serves as the term_cnt.

Xilinx XC4000

CLB count:

If width of output is even, # of CLBs = 1 + (width/2)
If width of output is odd, # of CLBs = 2 + (width/2)

CLB placement:

The CLBs are placed in a single column

Xilinx Virtex

Slice count:

If not using term_cnt, # of Slices = (width of output + 1)/2
If using term_cnt, # of Slices = width of output + 1

Slice placement:

The Slices are placed in a single column if term_cnt is tied to null. Otherwise, there are 2 columns, one of them is used to generate the term_cnt signal.

Version:
2.0
Author:
Tim Wheeler

Out
Outnext
Field Summary
static CellInterface[] cell_interface
           
static java.lang.String cellname
          The output is a generic width
static CellInterface[] implicit_interface
           
 
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_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
downcnt(Node parent, Wire clk, boolean b, Wire clk_en, Wire load, Wire load_data, Wire out)
           
downcnt(Node parent, Wire clk, boolean b, Wire clk_en, Wire load, Wire load_data, Wire out, long resetState)
           
downcnt(Node parent, Wire clk, boolean b, Wire clk_en, Wire load, Wire load_data, Wire out, long resetState, java.lang.String name)
           
downcnt(Node parent, Wire clk, boolean b, Wire clk_en, Wire load, Wire load_data, Wire out, java.lang.String name)
           
downcnt(Node parent, Wire clk, boolean b, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out)
           
downcnt(Node parent, Wire clk, boolean b, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out, BV resetState)
           
downcnt(Node parent, Wire clk, boolean b, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out, BV resetState, java.lang.String name)
           
downcnt(Node parent, Wire clk, boolean b, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out, long resetState)
           
downcnt(Node parent, Wire clk, boolean b, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out, long resetState, java.lang.String name)
           
downcnt(Node parent, Wire clk, boolean b, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out, java.lang.String name)
           
downcnt(Node parent, Wire clk_en, Wire load, Wire load_data, Wire out)
           
downcnt(Node parent, Wire clk_en, Wire load, Wire load_data, Wire out, long resetState)
           
downcnt(Node parent, Wire clk_en, Wire load, Wire load_data, Wire out, long resetState, java.lang.String name)
           
downcnt(Node parent, Wire clk_en, Wire load, Wire load_data, Wire out, java.lang.String name)
           
downcnt(Node parent, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out)
           
downcnt(Node parent, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out, BV resetState)
           
downcnt(Node parent, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out, BV resetState, java.lang.String name)
           
downcnt(Node parent, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out, long resetState)
           
downcnt(Node parent, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out, long resetState, java.lang.String name)
           
downcnt(Node parent, Wire clk_en, Wire load, Wire load_data, Wire term_cnt, Wire out, java.lang.String name)
           
 
Method Summary
 boolean cellInterfaceDeterminesUniqueNetlistStructure()
          When false, the default behavior of this method, each cell will list itself separately in a netlist, guaranteeing that the netlist will not have invalid data at the expense of a larger file-size.
 void clock()
          Clock is used in the behavioral model and is called once per clock cycle
static byucc.jhdl.contrib.modgen.outputs compute(int load, long load_data, long out, int width)
          Used in behavioral model to compute the output.
static byucc.jhdl.contrib.modgen.BVoutputs computeBV(int load, BV load_data, BV out, int width)
          Used in behavioral model to compute the output.
 void connectImplicitPorts()
          Connects the implicit ports.
protected  boolean defaultSimulationModelIsBehavioral()
          Default simulation model is behavioral
 java.lang.String getCellName()
          Access the cell name associated with a derived class.
 void propagate()
          Propagate isn't used in this class
 void reset()
          Resets the output to the user-provided reset state.
 
Methods inherited from class byucc.jhdl.Logic.Logic
clockDriver, clockDriver, connect_implicit_ports, 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,