fpgen(1)

ORIGIN
This software belongs to the ALLIANCE CAD system from the
CAO-VLSI team at MASI laboratory, University P. & M. Curie
4, Place Jussieu ; 75252 PARIS Cedex 05 ; FRANCE
Fax: (33-1) 44.27.62.86 ; E-mail: cao-vlsi@masi.ibp.fr

NAME
fpgen - Procedural language for Data-Path synthesis based upon C.

SYNOPSIS
fpgen [-g] [-v] <SourceFile>

DESCRIPTION
    fpgen is a set of C functions dedicated to data-path synthesis. It provide a large set of vectorized operators, in the following, the C functions which generates such data-path components are called Macro-functions. fpgen create a hierarchical NetList that can be given to the data-path place and route tool DPR(1). As in the fpgen language you can specify some topological constraints (such as terminal placement) an auxiliary file ".dpr" is also generated to hold these informations and transmit them to DPR.
TERMINAL PLACEMENT
    The terminal declaration function DP_LOCON allow the designer to choose the side of the abutment-box where the physical terminal will appear. The four sides of the abutment-box are allowed and a special option let the place and route tool DPR choose itself the side. The terminal placement is effective only for DATA terminals, CTRL terminals are always sets on the north side of the abutment-box. See DP_LOCON for more informations.
DATA-PATH TYPES
    With fpgen the designer can build sub-data-path (also called BLOCKS data-path). A sub-data-path can be inserted later in another one, using the DP_IMPORT macro-function. The second data-path type is the TERMINAL data-path. A such component, once placed and routed could be used with any floorplan router. The type of data-path is given as argument of the DP_DEFLOFIG function.
DATA-PATH MODEL NAMES CONSTRAINTS
    The data-path NetList have some specifics constraints described in the DPR(1) manual pages. When building a data-path NetList fpgen performs some checks on the hierarchy consistency. These checks are essencially based on the leaf cells detection. Actually the leaf cells are recognized by their model names suffixes. So, designers must avoid to use such suffixes in data-path model names.
    Leaf cell model reserved suffixes :
    -    *_c    :    leaf cells of optimised generators (rfg,
rsa, bsg, ...).
    -    *_fp    :    cells of dedicated generators (invg,
nand2g, ...).
    -    *_dp    :    cells of the data-path all purpose library.
dplib(5).
AUXILIARY FILE
    The ".dpr" file hold supplemental topoligical informations. This file is automatically generated by fpgen to be read by the place and route tool DPR.
FILE SYNTAX  :
(the [spc] means exactly one space character)
First line	:	D	[spc]	TypeDP
Other lines	:	C	[spc]	ConnName	,	ConnSide
TypeDP    :    Among TERMINAL and BLOCK.
ConnName    :    For one bit terminals, this is exactly the terminal
name. Buses terminal names are unvectorized and looks like :
ConnName : BuseConnName [spc] Index
ConnSide    :    Among one of the following values :
NORTH, SOUTH, EAST, WEST and DEFAULT.

MISCELLANEOUS FUNCTIONS
DP_DEFLOFIG()    Open a new logical figure and set data-path
context to its default configuration.
DP_SAVLOFIG()    Close and save on disk the current logical figure.
DP_LOCON()    Define a connector.
DP_IMPORT()    Instanciate a data-path compatible component.

MACRO-FUNCTIONS
    The behavior of all the macro-functions can be described by the four following steps :
I)    Reading arguments and performing some checks.
II)    Looking for a previously generated model with the same
set of parameters as actually required, in an internal table. If the model has already been generated, jump to step IV).
III)    At this point, the model is created by a call
to the generator associated to this macro-function. Then the new model is stored in the internal table.
    Notice that the model name is not accessible by the designer. The macro-function encode the parameters and the context in order to build this name.
IV)    A new instance of the model is added to the current
working figure.
    As in GENLIB(1) each of the signals given as arguments are connected to an instance connector. The connectors are implicitly matched from the order of the signal on the list. The supply connectors are automatically added by the macro-function, thus they have not to appear in the call.
V)    In all the macro-function descriptions, it is shown that
connectors have two different types. The Data (noted DATA) and the Control (noted CTRL) types.
-    DATA    :    Corresponds to a virtual connector used in horizontal
connections in fplib cells to interconnect data signals.
-    CTRL    :    Corresponds to a North or South connector generally used to
introduce vertical control signals in fplib cells.
All the C macro-function calls have the followings common arguments :
-    InstName    :    Name of the new instance in the operator.
-    Width    :    Width of the operator bus, in bits.
-    Slice    :    Bottom slice of the operator(i.e. the slice where the LSB will be set).

  AVALAIBLE MACRO-FUNCTIONS
Booleans:
DP_INV()    Inverter.
DP_AND2()    Logical and, two inputs.
DP_NAND2()    Logical and, two inputs, complemented output.
DP_AND3()    Logical and, three inputs.
DP_NAND3()    Logical and, three inputs, complemented output.
DP_OR2()    Logical or, two inputs.
DP_NOR2()    Logical or, two inputs, complemented output.
DP_OR3()    Logical or, three inputs.
DP_NOR3()    Logical or, three inputs, complemented output.
DP_XOR2()    Logical exclusive or, two inputs.
DP_XNOR2()    Logical exclusive or, two inputs, complemented output.
Masks :
DP_NAND2MASK()    Logical and mask, complemented output.
DP_NOR2MASK()    Logical or mask, complemented output.
DP_XNOR2MASK()    Logical exclusive or mask, complemented output.
Multiplexers :
DP_MUX2CS()    Multiplexer, 2 inputs.
DP_NMUX2CS()    Multiplexer, 2 inputs, complemented output.
DP_MUX3CD()    Multiplexer, 3 inputs.
DP_BUSE()    Tristate.
DP_NBUSE()    Tristate, complemented output.
Arithmetic:
DP_ADSB2F()    Controlable adder substractor, 2 operands (need rsa
dedicated leaf cell library).
DP_SHIFT()    Barrel shifter (need bsg dedicated leaf cells
library).
Miscellaneous:
DP_NUL()    Zero detect.
DP_CONST()    Constant generator.
Registers:
DP_DFF()    D flip-flop with write enable.
DP_DFFT()    D flip-flop with write enable and scan.
DP_RGF1C0()    D Register file with one read bus and register
address zero forced to a null value (need rfg dedicated leaf cells library).

OPTIONS
-v    Verbose mode. fpgen will show one message per processing
step.
-g    Do not erase the executable after run.
SourceFile    Name of the file containing the fpgen specific
C source progam.

ENVIRONMENT VARIABLES
MBK_CATA_LIB    Contain the list of directories path holding the
leaf cells libraries. All macro-funcions uses the fplib(5) library, and a few others need additionnal one.

SEE ALSO
genlib(1) , fpgen(1), dpr(1), genlib(1), mbk(1), DP_INV(3), DP_AND2(3), DP_NAND2(3), DP_AND3(3), DP_NAND3(3), DP_OR2(3), DP_NOR2(3), DP_OR3(3), DP_NOR3(3), DP_XOR2(3), DP_XNOR2(3), DP_NAND2MASK(3), DP_NOR2MASK(3), DP_XNOR2MASK(3), DP_NMUX2CS(3), DP_MUX2CS(3), DP_MUX3CD(3), DP_BUSE(3), DP_NBUSE(3), DP_ADSB2F(3), DP_SHIFT(3), DP_NUL(3), DP_CONST(3), DP_DFF(3), DP_DFFT(3), DP_RFG1C0(3), fplib(5)