From 8e7858a9f56ce1441ea7e4e5f594276dc31fcc40 Mon Sep 17 00:00:00 2001 From: Franck Wajsburt Date: Thu, 21 Oct 1999 11:45:10 +0000 Subject: [PATCH] ajout de nouvelles cellules et quelques info generales en plus --- alliance/share/man/man5/sxlib.5 | 280 +++++++++++++++++++++----------- 1 file changed, 186 insertions(+), 94 deletions(-) diff --git a/alliance/share/man/man5/sxlib.5 b/alliance/share/man/man5/sxlib.5 index 8ea197de..f6e91453 100644 --- a/alliance/share/man/man5/sxlib.5 +++ b/alliance/share/man/man5/sxlib.5 @@ -1,6 +1,6 @@ -.\" $Id: sxlib.5,v 1.6 1999/09/29 18:29:08 franck Exp $ +.\" $Id: sxlib.5,v 1.7 1999/10/21 11:45:10 franck Exp $ .\" @(#)Labo.l 0.0 92/09/24 UPMC; Author: Franck Wajsburt -.TH SXLIB 5 "September 16, 1999" "ASIM/LIP6" "CAO\-VLSI Reference Manual" +.TH SXLIB 5 "October 19, 1999" "ASIM/LIP6" "CAO\-VLSI Reference Manual" .SH NAME .B sxlib - a portable CMOS Standard Cell Library .so man1/alc_origin.1 @@ -9,11 +9,11 @@ \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. This manual gives also -few thumb rules to help the user to well use the cells. The given delais -are the maximum (that means worst case for a generic .35 micron process). -More precise delais can be found in ALLIANCE VHDL behavior files (.vbe file). -Cell-name is built that way _ +behavior, width, maximum delay and input fan-in. This manual gives also +few thumb rules to help the user to well use the cells. The given delay +are the maximum (that means worst case for a generic .35 micron process). +More precise delay can be found in ALLIANCE VHDL behavior files (.vbe file). +Cell-name is built that way _ (see explanations below). .nf @@ -71,7 +71,7 @@ the 5x5 grid. 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 +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. @@ -91,6 +91,11 @@ delay by 1.5, and best delay by dividing by 2. More detailed data can be found in GENERIC data included in the VHDL files (.vbe). Examples can be found at the end of this manual. +At last, to get a very better idea about the real delay without simulating +the spice transistor netlist, it is required to use the TAS (1) tool, which +is a timing static analyzer able to give the longer and the shorter path for +a given process. + .SH OUTPUT DRIVE The output drive of a cell gives an information on the faculty for the cell @@ -110,12 +115,18 @@ With the 0.35um process, an \fBx1\fP is able to drive about \fB125fF\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. +Actually, for big gate, such as noa3ao322_x1, \fBx1\fP means maximal +driving strength reachable with a single logic layer, that can be much +less than an inv_x1. That is why is the cell list below contains more precise +drive strengh. As you can see noa3ao322_x1 as a output drive strengh of 0.6, +that means 0.6 time an inverter, so say it can drive about 0.6*125fF=75fF. 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 (125/(10+50*.15)=7). With 100 lambdas, 5 cells, with 750 lambdas -only 2 cells. +only 2 cells. Note that 50 lambdas means cells are very close one from +each other, nearly abutted, 100 lambdas is an average value. 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 @@ -123,13 +134,13 @@ transistor net-list from layout can tell if a cell is well used or not .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. +For most of cells, 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 +\fBinv\fP : \fBinv\fPersor buffer \fBbuf\fP : \fBbuf\fPfer [\fBn\fP]\fBts\fP : [\fBn\fPot] \fBt\fPree-\fBs\fPtate [\fBn\fP]\fBxr\fP : [\fBn\fPot] \fBx\fPo\fBr\fP inputs @@ -137,10 +148,7 @@ the VHDL interface component is always the alphabetic order. [\fBn\fP][\fBsd\fP]\fBff\fP : [\fBn\fPot] [\fBs\fPtatic|\fBd\fPynamic] \fBf\fPlip-\fBf\fPlop inputs [\fBn\fP]\fBoa\fP... : [\fBn\fPot] \fBa\fPnd/\fBo\fPr function (see below) - - - -\fBand_or cell (lex grammar):-\fP +\fBand_or cell (YACC (1) grammar):-\fP NAME : \fBn\fP OA_CELL -> not OA_CELL | OA_CELL -> OA_CELL @@ -151,6 +159,7 @@ OA_CELL : OPERATOR INPUTS -> function with INPUTS inputs OPERATOR : \fBa\fP -> and | \fBo\fP -> or + | \fBn\fP -> not OA_CELLS : OA_CELLS OA_CELL -> list of OA_CELL | OA_CELL -> last OA_CELL of the list @@ -160,109 +169,192 @@ INPUTS : \fBinteger\fP -> number of inputs The input names are implicit and formed that way \fBi\fP. They are attributed in order beginning by \fBi0\fP. +\fBnx\fP where x is a number means there are x inverters in parallel. For +example an23 is an \fBand\fP with 3 inputs of which two are inverted, that +is \fBand( not(i0), not(i1), i2)\fP. + \fBExamples:-\fP (some are not in sxlib) na2 : not( and(i0,i1)) +on12 : or( not(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)) +Note that xr2 could not be expressed with an and/or formulea even if +.br +xr2 = or( and( not(i0), i1), and( not(i1), i0)) = oan12an122 +.br +but the input names are not well distributed. .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 *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, + +The second column is the output drive strenght compared with the \fBinv_x1\fP +output drive strenght (see explanation above in section OUTPUT DRIVE). + +The following column is the delay in nano-seconds. +Remember this delay corresponds to the slower +input+0.6ns (see explanation above in section DELAY MODEL). + +The last column gives the function behavior with input capacitance. +\fB/\fP means \fBnot\fP, \fB+\fP means \fBor\fP, \fB.\fP +means \fBand\fP, \fB^\fP means \fBxor\fP. +Each input is followed by fan-in capacitance in fF, (e.g. i0<11> means i0 pin capacitance is 11fF). + +For some cells, such as +\fBfulladder\fP, it was not possible to internally connect all inputs. +That means there are several inputs that \fBmust be externally connected\fP. +In the following list, these inputs are followed by a star (*) character in +the equation. + +For example, fulladder equation is sout <= (a* . b* . cin*). +a* replaces a0, a1, a2, a3 that must be explicitly connected by the user. +Note also few cells have more than one output. In that case there are +several lines in the list, one by output. .nf - - \fB=================================================================\fP -\fBWIDTH NAME DELAY BEHAVIOR\fP +\fBWIDTH NAME DRIVE DELAY BEHAVIOR with cin\fP \fB-------------------------------------------------------- INVERSOR\fP - 3 inv_x1 .7 nq <= /i<8> - 3 inv_x2 .7 nq <= /i<12> - 4 inv_x4 .7 nq <= /i<26> - 7 inv_x8 .7 nq <= /i<54> + 3 inv_x1 1.0 0.7 nq <= /i<8> + 3 inv_x2 1.6 0.7 nq <= /i<12> + 4 inv_x4 3.6 0.7 nq <= /i<26> + 7 inv_x8 8.4 0.7 nq <= /i<54> \fB---------------------------------------------------------- BUFFER\fP - 4 buf_x2 1.0 q <= i<6> - 5 buf_x4 1.0 q <= i<9> - 8 buf_x8 1.0 q <= i<15> - + 4 buf_x2 2.1 1.0 q <= i<6> + 5 buf_x4 4.3 1.0 q <= i<9> + 8 buf_x8 8.4 1.0 q <= i<15> \fB------------------------------------------------------ THREE STATE\fP - 6 nts_x1 .8 IF (cmd<14>) nq <= /i<14> - 8 nts_x2 .9 IF (cmd<18>) nq <= /i<28> -10 ts_x4 1.1 IF (cmd<19>) q <= i<8> -13 ts_x8 1.2 IF (cmd<19>) q <= i<8> + 6 nts_x1 1.2 0.8 IF (cmd<14>) nq <= /i<14> + 8 nts_x2 2.4 0.9 IF (cmd<18>) nq <= /i<28> +10 ts_x4 4.3 1.1 IF (cmd<19>) q <= i<8> +13 ts_x8 8.4 1.2 IF (cmd<19>) q <= i<8> \fB-------------------------------------------------------------- AND\fP - 4 na2_x1 .9 nq <= /(i0<11>.i1<11>) - 7 na2_x4 1.2 nq <= /(i0<10>.i1<10>) - 5 na3_x1 1.0 nq <= /(i0<11>.i1<11>.i2<11>) - 8 na3_x4 1.3 nq <= /(i0<10>.i1<10>.i2<10>) - 6 na4_x1 1.0 nq <= /(i0<10>.i1<11>.i2<11>.i3<11>) -10 na4_x4 1.4 nq <= /(i0<10>.i1<11>.i2<11>.i3<11>) - 5 a2_x2 1.0 q <= (i0<9>.i1<11>) - 6 a2_x4 1.1 q <= (i0<9>.i1<11>) - 6 a3_x2 1.1 q <= (i0<10>.i1<10>.i2<10>) - 7 a3_x4 1.2 q <= (i0<10>.i1<10>.i2<10>) - 7 a4_x2 1.2 q <= (i0<10>.i1<10>.i2<10>.i3<10>) - 8 a4_x4 1.3 q <= (i0<10>.i1<10>.i2<10>.i3<10>) + 4 na2_x1 1.0 0.9 nq <= /(i0<11>.i1<11>) + 7 na2_x4 4.3 1.2 nq <= /(i0<10>.i1<10>) + 5 na3_x1 0.9 1.0 nq <= /(i0<11>.i1<11>.i2<11>) + 8 na3_x4 4.3 1.3 nq <= /(i0<10>.i1<10>.i2<10>) + 6 na4_x1 0.7 1.0 nq <= /(i0<10>.i1<11>.i2<11>.i3<11>) +10 na4_x4 4.3 1.4 nq <= /(i0<10>.i1<11>.i2<11>.i3<11>) + 5 a2_x2 2.1 1.0 q <= (i0<9>.i1<11>) + 6 a2_x4 4.3 1.1 q <= (i0<9>.i1<11>) + 6 a3_x2 2.1 1.1 q <= (i0<10>.i1<10>.i2<10>) + 7 a3_x4 4.3 1.2 q <= (i0<10>.i1<10>.i2<10>) + 7 a4_x2 2.1 1.2 q <= (i0<10>.i1<10>.i2<10>.i3<10>) + 8 a4_x4 4.3 1.3 q <= (i0<10>.i1<10>.i2<10>.i3<10>) + 5 an12_x1 1.0 1.0 q <= (/i0<12>).i1<9> + 8 an12_x4 4.3 1.1 q <= (/i0<9>).i1<11> \fB--------------------------------------------------------------- OR\fP - 4 no2_x1 .9 nq <= /(i0<12>+i1<12>) - 8 no2_x4 1.2 nq <= /(i0<12>+i1<11>) - 5 no3_x1 1.0 nq <= /(i0<12>+i1<12>+i2<12>) - 8 no3_x4 1.3 nq <= /(i0<12>+i1<12>+i2<11>) - 6 no4_x1 1.1 nq <= /(i0<12>+i1<12>+i2<12>+i3<12>) -10 no4_x4 1.4 nq <= /(i0<12>+i1<12>+i2<12>+i3<12>) - 5 o2_x2 1.0 q <= (i0<10>+i1<10>) - 6 o2_x4 1.1 q <= (i0<10>+i1<10>) - 6 o3_x2 1.1 q <= (i0<10>+i1<10>+i2<9>) -10 o3_x4 1.2 q <= (i0<10>+i1<10>+i2<9>) - 7 o4_x2 1.2 q <= (i0<10>+i1<10>+i2<10>+i3<9>) - 8 o4_x4 1.3 q <= (i0<12>+i1<12>+i2<12>+i3<12>) + 4 no2_x1 1.0 0.9 nq <= /(i0<12>+i1<12>) + 8 no2_x4 4.3 1.2 nq <= /(i0<12>+i1<11>) + 5 no3_x1 0.8 1.0 nq <= /(i0<12>+i1<12>+i2<12>) + 8 no3_x4 4.3 1.3 nq <= /(i0<12>+i1<12>+i2<11>) + 6 no4_x1 0.6 1.1 nq <= /(i0<12>+i1<12>+i2<12>+i3<12>) +10 no4_x4 4.3 1.4 nq <= /(i0<12>+i1<12>+i2<12>+i3<12>) + 5 o2_x2 2.1 1.0 q <= (i0<10>+i1<10>) + 6 o2_x4 4.3 1.1 q <= (i0<10>+i1<10>) + 6 o3_x2 2.1 1.1 q <= (i0<10>+i1<10>+i2<9>) +10 o3_x4 4.3 1.2 q <= (i0<10>+i1<10>+i2<9>) + 7 o4_x2 2.1 1.2 q <= (i0<10>+i1<10>+i2<10>+i3<9>) + 8 o4_x4 4.3 1.3 q <= (i0<12>+i1<12>+i2<12>+i3<12>) + 5 on12_x1 1.0 0.9 q <= (/i0<11>)+i1<9> + 8 on12_x4 4.3 1.1 q <= (/i0<9>)+i1<10> \fB--------------------------------------------------------- AND/OR 3\fP - 6 nao22_x1 .9 nq <= /((i0<14>+i1<14>).i2<14>) -10 nao22_x4 1.3 nq <= /((i0<8>+i1<8>).i2<9>) - 6 noa22_x1 .9 nq <= /((i0<14>.i1<14>)+i2<14>) -10 noa22_x4 1.3 nq <= /((i0<8>.i1<8>)+i2<9>) - 6 ao22_x1 1.2 q <= ((i0<8>+i1<8>).i2<9>) - 8 ao22_x4 1.3 q <= ((i0<8>+i1<8>).i2<9>) - 6 oa22_x1 1.2 q <= ((i0<8>.i1<8>)+i2<9>) - 8 oa22_x4 1.3 q <= ((i0<8>.i1<8>)+i2<9>) + 6 nao22_x1 1.2 0.9 nq <= /((i0<14>+i1<14>).i2<14>) +10 nao22_x4 4.3 1.3 nq <= /((i0<8> +i1<8>) .i2<9>) + 6 noa22_x1 1.2 0.9 nq <= /((i0<14>.i1<14>)+i2<14>) +10 noa22_x4 4.3 1.3 nq <= /((i0<8> .i1<8>) +i2<9>) + 6 ao22_x2 2.1 1.2 q <= ((i0<8>+i1<8>).i2<9>) + 8 ao22_x4 4.3 1.3 q <= ((i0<8>+i1<8>).i2<9>) + 6 oa22_x2 2.1 1.2 q <= ((i0<8>.i1<8>)+i2<9>) + 8 oa22_x4 4.3 1.3 q <= ((i0<8>.i1<8>)+i2<9>) \fB--------------------------------------------------------- AND/OR 4\fP - 7 nao2o22_x1 1.0 nq <= /((i0<14>+i1<14>).(i2<14>+i3<14>)) -11 nao2o22_x4 1.4 nq <= /((i0<8>+i1<8>).(i2<8>+i3<8>)) - 7 noa2a22_x1 1.0 nq <= /((i0<14>.i1<14>)+(i2<14>.i3<14>)) -11 noa2a22_x4 1.4 nq <= /((i0<8>.i1<8>)+(i2<8>.i3<8>)) - 9 ao2o22_x1 1.2 q <= ((i0<8>+i1<8>).(i2<8>+i3<8>)) -10 ao2o22_x4 1.3 q <= ((i0<8>+i1<8>).(i2<8>+i3<8>)) - 9 oa2a22_x1 1.2 q <= ((i0<8>.i1<8>)+(i2<8>.i3<8>)) -10 oa2a22_x4 1.4 q <= ((i0<8>.i1<8>)+(i2<8>.i3<8>)) - - - + 7 nao2o22_x1 1.2 1.0 nq <= /((i0<14>+i1<14>).(i2<14>+i3<14>)) +11 nao2o22_x4 4.3 1.4 nq <= /((i0<8> +i1<8>) .(i2<8> +i3<8>)) + 7 noa2a22_x1 1.2 1.0 nq <= /((i0<14>.i1<14>)+(i2<14>.i3<14>)) +11 noa2a22_x4 4.3 1.4 nq <= /((i0<8> .i1<8>) +(i2<8> .i3<8>)) + 9 ao2o22_x2 2.1 1.2 q <= ((i0<8>+i1<8>).(i2<8>+i3<8>)) +10 ao2o22_x4 4.3 1.3 q <= ((i0<8>+i1<8>).(i2<8>+i3<8>)) + 9 oa2a22_x2 2.1 1.2 q <= ((i0<8>.i1<8>)+(i2<8>.i3<8>)) +10 oa2a22_x4 4.3 1.4 q <= ((i0<8>.i1<8>)+(i2<8>.i3<8>)) +\fB--------------------------------------------------------- AND/OR 5\fP + 7 noa2ao222_x1 0.7 1.1 nq <= /((i0<11>.i1<11>)+((i2<13>+i3<13>).i4<13>)) +11 noa2ao222_x4 4.3 1.4 nq <= /((i0<11>.i1<11>)+((i2<11>+i3<11>).i4<11>)) +10 oa2ao222_x2 2.1 1.2 q <= ((i0<8> .i1<8>) +((i2<8> +i3<8>) .i4<8>)) +11 oa2ao222_x4 4.3 1.3 q <= ((i0<8> .i1<8>) +((i2<8> +i3<8>) .i4<8>)) +\fB--------------------------------------------------------- AND/OR 6\fP +10 noa2a2a23_x1 0.8 1.2 nq <= /((i0<13>.i1<14>) +(i2<14>.i3<14>) + +(i4<14>.i5<14>)) +13 noa2a2a23_x4 4.3 1.3 nq <= /((i0<13>.i1<14>) +(i2<14>.i3<14>) + +(i4<14>.i5<14>)) +12 oa2a2a23_x2 2.1 1.4 q <= ((i0<13>.i1<14>) +(i2<14>.i3<14>) + +(i4<14>.i5<14>)) +13 oa2a2a23_x4 4.3 1.4 q <= ((i0<13>.i1<14>) +(i2<14>.i3<14>) + +(i4<14>.i5<14>)) +\fB--------------------------------------------------------- AND/OR 7\fP + 9 noa3ao322_x1 0.6 1.2 nq <= /((i0<13>.i1<13>.i2<12>) + +((i3<13>+i4<13>+i5<13>).i6<13>)) +11 noa3ao322_x4 4.3 1.4 nq <= /((i0<10>.i1<9>.i2<9>) + +((i3<9>+i4<9>+i5<9>).i6<9>)) +10 oa3ao322_x2 2.1 1.2 q <= /((i0<10>.i1<9>.i2<9>) + +((i3<9>+i4<9>+i5<9>).i6<9>)) +11 oa3ao322_x4 4.3 1.3 q <= /((i0<10>.i1<9>.i2<9>) + +((i3<9>+i4<9>+i5<9>).i6<9>)) +\fB--------------------------------------------------------- AND/OR 8\fP +14 noa2a2a2a24_x1 0.6 1.4 nq <= /((i0<14>.i1<14>)+(i2<13>.i3<13>) + +(i4<13>.i5<13>)+(i6<14>.i7<14>)) +17 noa2a2a2a24_x4 4.3 1.7 nq <= /((i0<14>.i1<14>)+(i2<14>.i3<13>) + +(i4<13>.i5<13>)+(i6<14>.i7<14>)) +15 oa2a2a2a24_x2 2.1 1.5 q <= ((i0<14>.i1<14>)+(i2<14>.i3<13>) + +(i4<13>.i5<13>)+(i6<14>.i7<14>)) +16 oa2a2a2a24_x4 4.3 1.6 q <= ((i0<14>.i1<14>)+(i2<14>.i3<13>) + +(i4<13>.i5<13>)+(i6<14>.i7<14>)) \fB------------------------------------------------------ MULTIPLEXER\fP - 7 nmx2_x1 1.0 nq <= /((i0<14>./cmd<21>)+(i1<14>.cmd)) -12 nmx2_x4 1.3 nq <= /((i0<8>./cmd<14>)+(i1<9>.cmd)) - 9 mx2_x2 1.1 q <= (i0<8>./cmd<17>)+(i1<9>.cmd) -10 mx2_x4 1.3 q <= (i0<8>./cmd<17>)+(i1<9>.cmd) + 7 nmx2_x1 1.2 1.0 nq <= /((i0<14>./cmd<21>)+(i1<14>.cmd)) +12 nmx2_x4 4.3 1.3 nq <= /((i0<8>./cmd<14>)+(i1<9>.cmd)) + 9 mx2_x2 2.1 1.1 q <= (i0<8>./cmd<17>)+(i1<9>.cmd) +10 mx2_x4 4.3 1.3 q <= (i0<8>./cmd<17>)+(i1<9>.cmd) +12 nmx3_x1 0.4 1.2 nq <= /((i0<9>./cmd0<15>) + +(((i1<8>.cmd1<15>)+(i2<8>./cmd1)).cmd0)) +15 nmx3_x4 4.3 1.7 nq <= /((i0<9>./cmd0<15>) + +(((i1<8>.cmd1<15>)+(i2<8>./cmd1)).cmd0)) +13 mx3_x2 2.1 1.4 q <= ((i0<9>./cmd0<15>) + +(((i1<8>.cmd1<15>)+(i2<8>./cmd1)).cmd0)) +14 mx3_x4 4.3 1.6 q <= ((i0<9>./cmd0<15>) + +(((i1<8>.cmd1<15>)+(i2<8>./cmd1)).cmd0)) \fB-------------------------------------------------------------- XOR\fP - 9 nxr2_x1 1.1 nq <= /(i0<21>^i1<22>) -11 nxr2_x4 1.2 nq <= /(i0<20>^i1<21>) - 9 xr2_x1 1.0 q <= (i0<21>^i1<22>) -12 xr2_x4 1.2 q <= (i0<20>^i1<21>) + 9 nxr2_x1 1.2 1.1 nq <= /(i0<21>^i1<22>) +11 nxr2_x4 4.3 1.2 nq <= /(i0<20>^i1<21>) + 9 xr2_x1 1.2 1.0 q <= (i0<21>^i1<22>) +12 xr2_x4 4.3 1.2 q <= (i0<20>^i1<21>) \fB-------------------------------------------------------- FLIP-FLOP\fP -."25 nsdff2_x4 1.0 IF RISE(ck<23>) nq <=/((i0<11>./cmd<13>)+(i1<7>.cmd)) -18 sff1_x4 1.7 IF RISE(ck<8>) q <= i<8> -24 sff2_x4 1.9 IF RISE(ck<8>) q <= ((i0<8>./cmd<16>)+(i1<7>.cmd)) +."25 nsdff2_x4 4.3 1.0 IF RISE(ck<23>) + nq <=/((i0<11>./cmd<13>)+(i1<7>.cmd)) +18 sff1_x4 4.3 1.7 IF RISE(ck<8>) + q <= i<8> +24 sff2_x4 4.3 1.9 IF RISE(ck<8>) + q <= ((i0<8>./cmd<16>)+(i1<7>.cmd)) +28 sff3_x4 4.3 2.4 IF RISE(ck<8>) + q <= (i0<9>./cmd0<15>) + +(((i1<8>.cmd1<15>)+(i2<8>./cmd1)).cmd0) +\fB------------------------------------------------------------ ADDER\fP +16 halfadder_x2 2.1 1.2 sout <= (a<27>^b<22>) + 2.1 1.0 cout <= (a.b) +18 halfadder_x4 4.3 1.3 sout <= (a<27>^b<22>) + 4.3 1.1 cout <= (a.b) +20 fulladder_x2 2.1 1.8 sout <= (a*<28>^b*<28>^cin*<19>) + 2.1 1.4 cout <= (a*.b*+a*.cin*+b*.cin*) +21 fulladder_x4 4.3 2.2 sout <= (a*<28>^b*<28>^cin*<19>) + 4.3 1.5 cout <= (a*.b*+a*.cin*+b*.cin*) \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 + 3 zero_x0 0 0 nq <= '0' + 3 one_x0 0 0 q <= '1' + 2 tie_x0 0 0 Body tie cell + 1 rowend_x0 0 0 Empty cell \fB==================================================================\fP .fi