Table of Contents
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
fpgen - Procedural language for Data-Path synthesis based upon C.
fpgen [--no-exec] [--keep-exec] [-v] <SourceFile> [-e <Args>]
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)
.
- 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.
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).
- -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.
- 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.
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)
,
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.