Table of Contents

Origin

This software belongs to the ALLIANCE CAD system from the CAO-VLSI team at ASIM/LIP6/UPMC laboratory.
LIP6/ASIM
University P. et M. Curie 4, place Jussieu 75252 PARIS Cedex 05 FRANCE
Fax : {33/0} 1.44.27.62.86
E-mail support : alliance-support@asim.lip6.fr

Name

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

Synopsis

fpgen [--no-exec] [--keep-exec] [-v] <SourceFile> [-e <Args>]

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-func_tions. fpgen create a hierarchical NetList that can be given to the data_path place and route tool dpr(1) .

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_TRACE()
Enable/disable trace mode.
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.

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). All view of the Macro-Function are stored in the directory given by the FPGEN_LIB environement variable. The associated CATAL file is automatically updated

MODEL NAMES
fpgen generate itself the operator model names and give them special meanings. So, designers must avoid to use same names. The reserved names are listed below (using regular expression syntax) :

[a-z0-9]*_[0-9x]*[lm]_cl
[a-z0-9]*_[0-9x]*[lm]_bk

At the opposite, when the designer wants to create a custom operator, with GenLib or logical synthetizer scmap(1) he must gave to his operator model name the suffix _us".

AVALAIBLE MACRO-FUNCTIONS
Booleans:

DP_INV()
Inverter.
DP_BUFF()
Buffer.
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_NMUX2CS()
Multiplexer, 2 inputs, complemented output.
DP_MUX2CS()
Multiplexer, 2 inputs.
DP_MUX3Cs()
Multiplexer, 3 inputs.
DP_MUX4Cs()
Multiplexer, 4 inputs.
DP_MUX5Cs()
Multiplexer, 5 inputs.
DP_NBUSE()
Tristate, complemented output.
DP_BUSE()
Tristate.

Arithmetic:

DP_ADD2F
fast adder, two operands.
DP_ADSB2F()
Controlable adder substractor, 2 operands (need rsa dedicated leaf cell library).
DP_SHIFT()
Barrel shifter (need bsg dedicated leaf cells library).
DP_MULT()
Unpipelined array multiplier (need amg dedicated leaf cell library).
DP_MULTP()
Pipelined array multiplier (need amg dedicated leaf cell library).

Miscellaneous:

DP_NUL()
Zero detect.
DP_CONST()
Constant generator.

Registers:

DP_PDFF()
D flip-flop with write enable.
DP_PDFFR()
D flip-flop with write enable and reset.
DP_PDFFT()
D flip-flop with write enable and scan.
DP_PDFFRT()
D flip-flop with write enable, scan and reset.
DP_RGF1CC()
D Register file, one read bus.
DP_RGF1C0()
D Register file, one read bus, R0 <= 0.
DP_RGF2CC()
D Register file, two read bus.
DP_RGF2C0()
D Register file, two read bus, R0 <= 0. (need rfg dedicated leaf cells library).

Options

-v
Verbose mode. fpgen will show one message per processing step.
--keep-exec Do not erase the executable after run.
--no-exec
Skip the execution step.

SourceFile Name of the file containing the fpgen specific C source progam.

-e <Args>
All arguments following -e are passed to the executable.

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.
FPGEN_LIB
The path were FpGen will store all the generated models, and their associated CATAL. If not set MBK_WORK_LIB will be used. Notice that this library path must also be part of the MBK_CATA_LIB list.

See Also

genlib(1) , fpgen(1) , dpr(1) , genlib(1) , mbk(1) , DP_DEFLOFIG(3) , DP_SAVLOFIG(3) , DP_LOCON(3) , DP_IMPORT(3) , DP_INV(3) , DP_BUSE(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_CONST(3) , DP_NMUX2CS(3) , DP_MUX2CS(3) , DP_MUX3CS(3) , DP_MUX4CS(3) , DP_MUX5CS(3) , DP_BUSE(3) , DP_NBUSE(3) , DP_ADD2F(3) , DP_ADSB2F(3) , DP_SHIFT(3) , DP_MULT(3) , DP_MULTP(3) , DP_NUL(3) , DP_PDFF(3) , DP_PDFFR(3) , DP_PDFFT(3) , DP_PDFFRT(3) , DP_RFG1C0(3) , DP_RFG1CC(3) , DP_RFG2C0(3) , DP_RFG2CC(3) ,

Bug Report

This tool is under development at the ASIM/LIP6/UPMC laboratory, cao-vlsi research team.
We need your feedbak to improve documentation and tools. If you find bugs, please fill-in the form at http://asim.lip6.fr/alliance/support/bug-report/ Thanks for doing this.


Table of Contents

 



Alliance Web Site © 1997, 2002 ASIM/LIP6/UPMC, page maintained by Czo [Olivier Sirol] , last updated on 26 May 2000.