DPP(1)

NAME

dpp
     - DataPath Placement tool

SYNOPSIS

dpp <source> [MSB] [-o1/-o2]

DESCRIPTION
dpp is an automatic placement tool for bit-sliced datapath. It can be used with the specialized router dpr.
1/ The Bit-slice Topology
A datapath is considered as a set of operators handling bus-structured data. It is made by abutting operators (or columns) horizontally. In fully regular multi-bit architectures, all operators are N-bit height, N corresponds to the number of bits. So, a bit-sliced datapath structure is similar to a two-dimensional array where lines and columns correspond respectively to bit-slices and operators. Data busses are distributed horizontally in metal2 over the cells, while control lines run vertically in metal1. Power and ground supplies are horizontal in metal2, they delimit slices and are shared by two adjacent bit-slices. Least Significant Bit (L.S.B) is at the bottom, while Most Significant Bit (M.S.B) is at the top. At the top of the datapath, two slices are dedicated to the control line buffers. So for a 32 bit datapath the compiled layout is 34 slices. 2/ Datapath components
Two types of components may be used in a datapath:
- One-bit functional cells called bit-cells. Such components are available in a specialized datapath cell library called DPLIB.
- Multi-bit optimized blocks provided by a set of parameterized datapath block generators.
The parameterized datapath block generators may be used for complex operators such as fast adders, barrel shifters and register files. To construct regular multi-bit operators such as multiplexers, logic units and buffers or to implement irregular operators such as comparators and flag generators, DPLIB cells must be used. 3/ User Interface
The placement tool needs as an input the datapath net-list. It must be given in the "source" file. This file must be available in the directory defined by the environment variable MBK_WORK_LIB. The result file provided by the placement tool contains the physical description of the datapath. It is saved, with the same name as the source file, in the directory defined by the environment variable MBK_WORK_LIB. Several logical and physical description formats are supported by this tool. The input netlist format of both the datapath and its components is defined by the environment variable MBK_IN_LO. the input layout format of each datapath leaf-cell is defined by the environment variable MBK_IN_PH. While the output layout format is defined by the environment variable MBK_OUT_PH.
The input net-list must be structured in one or two hierarchical levels:
- First hierarchical level defines the datapath operators (or columns). At this level, columns are either multi-bit optimized blocks or structured. These operators are abutted horizontally by the placement tool.
- The possible second hierarchical level contains one-bit cells that belong to DPLIB to form the structured operators. In that case cells are stacked vertically in the same column.
At the moment, dpp needs a catalog file whose name is defined by the environment variable MBK_CATAL_NAME, the default name is CATAL. This file must contain the model names of the optimized blocks. These blocks must be generated before invoking the placement tool. It tells the placement tool which elements must be considered as leaf-cells in addition to DPLIB cells. For more details about the catalog file use "man catal". Files describing the logical view and the physical view of each leaf-cell must be available in one of the directories defined by the environment variable MBK_CATA_LIB.
Placement is performed in two independent steps: a constructive step that builds the different columns and a second step that abuts columns horizontally and optimizes (if specified) the column ordering. During the first step, the vertical bit-cell placemennt is based on the optional information given by the user through the instance name. The integer just after the last underscore '_' in the instance name is supposed to be the slice index in which the cell must be placed. For example an instance named "toto_0" will be placed in the slice number 0. When the cell is two or more slice height, the index corresponds to the lower slice. For example in a 32 bit datapath, buffers (two slice height) must be named "tata_32".
While constructing columns, vertical abutability is checked to ensure the control line continuity. Warning messages may appear during this placement step.
Datapath external terminals are automatically created and placed by this tool. We define two types of terminals: data terminals and control terminals. A data terminal is placed on the west or east abutment box side, in its corresponding slice. While a control terminal is placed on the north or/and south abutment box side(s), in its column.

OPTIONS

B:  This option is necessary to tell the placement tool that the index 0 corresponds to the MSB. So, in a 32 bit datapath plus two slice buffers, the LSB cells must be indexed by 33 while the buffers must be indexed by 1. By default the index 0 corresponds to the LSB.

-o1:
    This option tells the placement tool to optimize the column ordering. The algorithm that will be used for this task is the first one: for a given permutation cycle, the exchange of two columns that gives the best solution is realized. If this option is not given, the resulting column ordering corresponds to the order of the operators found in the input netlist. This feature may be used to dictate a given column ordering.

-o2:
    This option tells the placement tool to optimize the column ordering. The algorithm that will be used for this task is the second one: each time that a permutation of two columns gives a better solution, columns are exchanged, and so on. If this option is not given, the resulting column ordering corresponds to the order of the operators found in the input netlist. This feature may be used to dictate a given column ordering.

ERROR MESSAGES
1/ <figname> is not in the CATAL, must be a second hierarchical level!
This message appears when a figure is instanciated in the first hierarchical level and is neither a leaf-cell (in the CATAL) nor structured (a second hierarchical level). 2/ <figname> is not in the CATAL!
This message appears when a figure is instanciated in the second hierarchical level and is not in the CATAL file. 3/ Physical terminal <conname> with no logical corresponding in <figname>!
This message appears when a physical terminal has no corresponding logical terminal for a given leaf-cell. Logical and physical terminals must have the same name in both logical and physical descriptions. 4/ Virtual terminal <conname> in <figname> is not valid!
This message appears when a virtual terminal does not respect the naming convention which is "conname_tracknumber" (for example "titi_0") or when it is not covered by an allow-metal2 wire. 5/ Allow-metal2 wire in <figname> not valid!
This message appears when an allow-metal2 wire is fully or partially out of the abutment box of the figure.
6/ The index must be an integer in <insname>!
This message appears when the index, just after the underscore, in the instance name is not an integer.
6/ Space [i,j] is already full!
This message appears when two different instances in the same column have the same index or when instance indexes are not correctly given (especially if there is two or more slice height instances in the coolumn).

EXAMPLES
To use dpp, some environment variables must be set :
If the VHDL format for netlist and the MODGEN format for layout are used, the user must have the following environment:
MBK_CATA_LIB =/labo/cells/dpr:/labo/cells/rsa/:/labo/cells/bgd:/labo/cells/bsg
MBK_IN_LO =vst
MBK_IN_PH =mg
MBK_OUT_PH =mg
MBK_CATAL_NAME =CATAL
MBK_WORK_LIB =.
The command line to be executed for placing the datapath called "alu4" without any option is the following:
dpp alu4
This command generates the physical initial placement of the alu4. In that case the indexes 0 and 3 correspond respectively to the MSB and the LSB.

SEE ALSO
MBK_IN_LO(1), MBK_IN_PH(1), MBK_OUT_PH(1), MBK_CATA_LIB(1), MBK_WORK_LIB(1), MBK_CATAL_NAME(1), dplib(1), catal(5), dpr(1), rsa(1), bgd(1), bsg(1).