man sxlib de la part de franck

This commit is contained in:
Olivier Sirol 1999-09-22 13:52:10 +00:00
parent 5b2b5efbc0
commit 2ab024381b
1 changed files with 252 additions and 0 deletions

View File

@ -0,0 +1,252 @@
.\" $Id: sxlib.5,v 1.1 1999/09/22 13:52:10 czo Exp $
.\" @(#)Labo.l 0.0 92/09/24 UPMC; Author: Franck Wajsburt
.pl -.4
.TH SXLIB 5 "September 16, 1999" "ASIM/LIP6" "CAO\-VLSI Reference Manual"
.SH NAME
.B sxlib - a portable CMOS Standard Cell Library
.so man1/alc_origin.1
.SH DESCRIPTION
\fBsxlib\fP library contains standard cells that have been developed at
UPMC-ASIM/LIP6. This manual gives the list of available cells, with their
behavior, width, maximum delay and input fan-in.
.nf
Three files are attached to each cell:-
- Layout cell-name.ap
- Transistor net-list cell-name.al
- VHDL behavior cell-name.vbe
Cell-name is built that way <behavior>_<output drive>.
.fi
.SH PHYSICAL OUTLINE
\fBsxlib\fP uses the symbolic layout promoted by Alliance in order to
provide process independence. All dimensions are in lambda units. The
mapping to a specific process CIF or GDS2 layout must be performed by the
\fBs2r\fP tool (symbolic to real), which uses a value for the lambda
(e.g. 1 lambda=0.3um).
.nf
_________________
50 | VDD |
45 |_________________| x : place of virtual connector.
40 | x |
35 | x x | they are named : name_<y>
30 | x x |
25 | x x | for example : i0_20
20 | x | i0_25
15 | x | i0_30
10 |_________________|
5 | VSS |
0 |_________________|
0 5 10 15 20 25 30
.fi
All cells are 50 lambdas high and \fBN\fP times 5 lambdas wide, where
\fBN\fP is the number of pitches. That is the only physical information
given in the cell list below. Power supplies are in horizontal ALU1 and
are 6 lambdas wide. Connectors are inside the cells, placed on a 5x5 grid.
Half layout design rules are a warranty for any layer on any face, except
for the power supply and NWELL. Cells can be abutted in all directions
whenever the supply is well connected and connectors are always placed on
the 5x5 grid.
.SH DELAY MODEL
Cells have been extracted and simulated by using a generic 0.35um process
in order to give realistic values for the delays and capacitances. We
chose to give only the worst delay for each output signal, though it is not
very realistic. (since delay depends on each input, an input can be easily
up to twice faster than another). However, we just wanted to give an idea
of the relative delay.
Furthermore, we added 0.6ns to each output delay in order to take into
account the delay due to the signal commutation. We have supposed the
output drives the maximum capacitance. This capacitance have been computed
as follow. We considered that a good slope signal for this process was
0.8ns. Then we searched for the capacitance required to obtain the same
input and output slope (0.8ns) for the smaller inverter (inv_x1). That was
125fF. We simulated the same inverter without output capacitance. The delay
difference was about 0.6ns. This result is not exactly the same for all
cells, but 0.6ns is a good approximation.
The given delay is then a worst case (70degree, 2.7Volt, slow process,
worst input), an idea of the typical delay can be obtain by dividing worst
delay by 1.5, and best delay by dividing by 2. More detailed data can be
found in VHDL (.vbe) files.
.SH OUTPUT DRIVE
The output drive of a cell gives an information on the faculty for the cell
to drive a big capacitance. This faculty depends on the rising and falling
output resistance. The smaller the resistance, the bigger can be the
capacitance. Minimum drive is \fBx1\fP. This corresponds to the smallest
available inverter (inv_x1). \fBx2\fP means the cell is equivalent (from
the driving point of view) at two smaller inverters in parallel, and so
on.
The maximum output drive is \fBx8\fP. It is limited because of the maximum
output slope and the maximum authorized instantaneous current. If it was
bigger the output slope could be very tight and the current too big.
With the 0.35um process, an \fBx1\fP is able to drive about \fB125fF\fP,
\fBx2\fP -> \fB250fF\fP, \fBx4\fP -> \fB500fF\fP,\fBx8\fP -> \fB1000fF\fP.
This is just an indication since if a cell is overloaded, the only
consequence is to increase the propagation time. On the other hand, it is
not very good to under-load a cell because this leads to a signal overshoot.
With the 0.35um process, a \fB1\fP lambda interconnect wire is about
\fB0.15fF\fP, an average cell fan-in is 10fF. Then, if it needs about 50
lambdas to connect 2 cells, an \fBx1\fP cell is able to drive about 7
cells. With 100 lambdas, 5 cells, with 750 lambdas only 2 cells.
All this are indications. Only a timing analysis on the extracted
transistor net-list from layout can tell if a cell is well used or not
(see tas(1) for informations about static timing analysis).
.SH BEHAVIOR
The user can deduce the cell behavior just by reading its name. That is
very intuitive for \fBinv\fPerter and more complex for and/or cells. For
the last, the name gives the and/or tree structure. The input order for
the VHDL interface component is always the alphabetic order.
.nf
\fBinv\fP : \fBinv\fPersor
\fBbuf\fP : \fBbuf\fPfer
[\fBn\fP]\fBts\fP : [\fBn\fPot] \fBt\fPree-\fBs\fPtate
[\fBn\fP]\fBxr\fP<i> : [\fBn\fPot] \fBx\fPo\fBr\fP <i> inputs
[\fBn\fP]\fBmx\fP<i> : [\fBn\fPot] \fBm\fPultiple\fBx\fPor <i> inputs with coded command
[\fBn\fP][\fBsd\fP]\fBff\fP<i> : [\fBn\fPot] [\fBs\fPtatic|\fBd\fPynamic] \fBf\fPlip-\fBf\fPlop <i> inputs
[\fBn\fP]\fBoa\fP... : [\fBn\fPot] \fBa\fPnd/\fBo\fPr function (see below)
\fBand_or cell (lex grammar):-\fP
NAME : \fBn\fP OA_CELL -> not OA_CELL
| OA_CELL -> OA_CELL
OA_CELL : OPERATOR INPUTS -> function with INPUTS inputs
| OPERATOR OA_CELLS INPUTS -> function with INPUTS inputs
where some inputs are OA_CELL
OPERATOR : \fBa\fP -> and
| \fBo\fP -> or
OA_CELLS : OA_CELLS OA_CELL -> list of OA_CELL
| OA_CELL -> last OA_CELL of the list
INPUTS : \fBinteger\fP -> number of inputs
The input names are implicit and formed that way \fBi<number>\fP.
They are attributed in order beginning by \fBi0\fP.
\fBExamples:-\fP (some are not in sxlib)
na2 : not( and(i0,i1))
noa2a22 : not( or( and(i0,i1), and(i2,i3)))
noa23 : not( or( and(i0,i1), i3))
noao22a34 : not( or( and( or(i0,i1), i2), and(i3,i4,i5), i6, i7))
.fi
.SH CELL LIST
All available cells are listed below. The first column is the pitch width.
The pitch value is 5 lambdas. The height is 50. Area is then <number>*5*50.
The delay is in nano-seconds. Remember this delay corresponds to the slower
input+0.6ns. The behavior gives logic function. / means not, + means or, .
means and, ^ means xor. Each input is followed by fan-in capacitance in fF,
(e.g. i0<11> means i0 pin capacitance is 11fF).
.nf
\fB=================================================================\fP
\fBWIDTH NAME DELAY BEHAVIOR\fP
\fB---------------------------------------------------------- BUFFER\fP
3 inv_x1 .73 nq <= /i<8>
3 inv_x2 .76 nq <= /i<12>
4 inv_x4 .74 nq <= /i<26>
7 inv_x8 .73 nq <= /i<54>
4 buf_x2 1.00 q <= i<6>
5 buf_x4 1.00 q <= i<9>
8 buf_x8 1.00 q <= i<15>
\fB------------------------------------------------------ THREE STATE\fP
6 nts_x1 .85 IF (cmd<14>) nq <= /i<14>
8 nts_x2 .93 IF (cmd<18>) nq <= /i<28>
10 ts_x4 1.08 IF (cmd<19>) q <= i<8>
13 ts_x8 1.21 IF (cmd<19>) q <= i<8>
\fB-------------------------------------------------------------- AND\fP
4 na2_x1 .88 nq <= /(i0<11>.i1<11>)
7 na2_x4 1.19 nq <= /(i0<10>.i1<10>)
5 na3_x1 .96 nq <= /(i0<11>.i1<11>.i2<11>)
8 na3_x4 1.28 nq <= /(i0<10>.i1<10>.i2<10>)
6 na4_x1 1.02 nq <= /(i0<10>.i1<11>.i2<11>.i3<11>)
10 na4_x4 1.36 nq <= /(i0<10>.i1<11>.i2<11>.i3<11>)
5 a2_x2 1.03 q <= (i0<9>.i1<11>)
6 a2_x4 1.11 q <= (i0<9>.i1<11>)
6 a3_x2 1.11 q <= (i0<10>.i1<10>.i2<10>)
7 a3_x4 1.18 q <= (i0<10>.i1<10>.i2<10>)
7 a4_x2 1.17 q <= (i0<10>.i1<10>.i2<10>.i3<10>)
8 a4_x4 1.24 q <= (i0<10>.i1<10>.i2<10>.i3<10>)
\fB--------------------------------------------------------------- OR\fP
4 no2_x1 .89 nq <= /(i0<12>+i1<12>)
8 no2_x4 1.20 nq <= /(i0<12>+i1<11>)
5 no3_x1 1.00 nq <= /(i0<12>+i1<12>+i2<12>)
8 no3_x4 1.31 nq <= /(i0<12>+i1<12>+i2<11>)
6 no4_x1 1.09 nq <= /(i0<12>+i1<12>+i2<12>+i3<12>)
10 no4_x4 1.40 nq <= /(i0<12>+i1<12>+i2<12>+i3<12>)
5 o2_x2 1.00 q <= (i0<10>+i1<10>)
6 o2_x4 1.08 q <= (i0<10>+i1<10>)
6 o3_x2 1.10 q <= (i0<10>+i1<10>+i2<9>)
10 o3_x4 1.21 q <= (i0<10>+i1<10>+i2<9>)
7 o4_x2 1.22 q <= (i0<10>+i1<10>+i2<10>+i3<9>)
8 o4_x4 1.30 q <= (i0<12>+i1<12>+i2<12>+i3<12>)
\fB-------------------------------------------------------------- XOR\fP
9 nxr2_x1 1.09 nq <= /(i0<21>^i1<22>)
11 nxr2_x4 1.15 nq <= /(i0<20>^i1<21>)
9 xr2_x1 1.00 q <= (i0<21>^i1<22>)
12 xr2_x4 1.24 q <= (i0<20>^i1<21>)
\fB----------------------------------------------------------- AND/OR\fP
7 nao2o22_x1 .97 nq <= /((i0<14>+i1<14>).(i2<14>+i3<14>))
11 nao2o22_x4 1.39 nq <= /((i0<8>+i1<8>).(i2<8>+i3<8>))
7 noa2a22_x1 .96 nq <= /((i0<14>.i1<14>)+(i2<14>.i3<14>))
11 noa2a22_x4 1.39 nq <= /((i0<8>.i1<8>)+(i2<8>.i3<8>))
\fB------------------------------------------------------ MULTIPLEXER\fP
7 nmx2_x1 1.00 nq <= /((i0<14>./cmd<21>)+(i1<14>.cmd))
12 nmx2_x4 1.29 nq <= /((i0<8>./cmd<14>)+(i1<9>.cmd))
9 mx2_x2 1.12 q <= (i0<8>./cmd<17>)+(i1<9>.cmd)
10 mx2_x4 1.28 q <= (i0<8>./cmd<17>)+(i1<9>.cmd)
\fB-------------------------------------------------------- FLIP-FLOP\fP
."25 nsdff2_x4 1.04 IF RISE(ck<23>) nq <=/((i0<11>./cmd<13>)+(i1<7>.cmd))
18 sff1_x4 1.68 IF RISE(ck<8>) q <= i<8>
24 sff2_x4 1.93 IF RISE(ck<8>) q <= ((i0<8>./cmd<16>)+(i1<7>.cmd))
\fB---------------------------------------------------------- SPECIAL\fP
3 zero_x0 0 nq <= '0'
3 one_x0 0 q <= '1'
2 tie_x0 0 Body tie cell
1 rowend_x0 0 Empty cell
\fB==================================================================\fP
.fi
.SH SEE ALSO
\fB MBK_CATA_LIB (1), catal(1), scr(1), lynx(1), bop(1), glop(1), scmap(1),
c4map(1), tas(1), yagle(1), genlib(1), ap(1), al(1), vbe(1)\fP
.SH NOTES
It is possible to add new cells in the library just by providing the 3
files .ap, .al and .vbe in the standard cell directory. The layout view
can be created with the symbolic editor graal. The physical outline is
given above. The net-list view can be automatically generated with the
lynx extractor. The behavioral view must be written by the designer and
checked with the yagle functional abstractor. The file must contain the
generic fields in order to be used by the logic synthesis tools and the
I/Os terminals must be in the same order (alphabetic) in the .vbe and .al
files.
If you develop new cells, please send the corresponding files
to alliance\-support@asim.lip6.fr
.so man1/alc_bug_report.1