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
dpp <source> [MSB] [-o1/-o2]
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:
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 leafcell 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.
MSB: 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.
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).
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.
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.