man sxlib de la part de franck
This commit is contained in:
parent
5b2b5efbc0
commit
2ab024381b
|
@ -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
|
Loading…
Reference in New Issue