Profiling Simple Digital Design Components as Two-Level Implementations
using the ESPRESSO logic minimization tool

Korey Sewell and Frank Vahid
Department of Computer Science and Engineering
University of California, Riverside
Riverside, CA 92521
(909)787-2373


 SummaryUsing ESPRESSO | Analyzing ESPRESSO | Adder   |  Comparator  |  Multiplier   |  Adder (Carry-Look ahead) 


Summary

  The purpose of this project is to demonstrate why traditional methods of logic design ( truth tables + minimization) are no longer used when designing even the simplest logic design components. In this project, four components are profiled as two-level implementations using  ESPRESSO for logic minimization and other helpful details. After the appropriate components are evaluated by ESPRESSO, the resulting information is analyzed and then put into a table format.

[back to top]


Using ESPRESSO

 - If you are trying to get started using ESPRESSO, you may want to try these links:

- Creating ESPRESSO inputs can become tedious. It may be best to find a good program to create your ESPRESSO inputs like "eqntott". Another alternative is for one to create their own program to create the ESPRESSO inputs.

[back to top]


Analyzing ESPRESSO Results

Basic Interpretation of ESPRESSO can be found in the ESPRESSO tutorial (use link above). The following contains the descriptions of how to get the results illustrated in the results tables to follow.

  • Inputs: # of Inputs to Component

  • Truth-Table Rows: 2 * Inputs

  • Gate Count: # of Logic Gates Needed for the Circuit (AND + OR + INV). In most cases the # of outputs equals the # of OR gates since their is only one OR gate per output in this PLA Implementation. The # of INVERTERS equals the the number of inputs because in every circuit there needs to be an inverter to an initial input. The Number of AND gates is equal to the number of equations that the ESPRESSO output file has.This can be found by either counting the # of equations manually or locating the line starting with ".p" before the output equations are listed (the number after the .p is the number of equations)

  • Transistor Count: # of Transistors for circuit. This implementation assumes 5 transistors for an AND & OR gates and 2 for each INV gate.

  • Total # of AND Gate Inputs: This is the total amount of inputs to all of the AND gates in the circuit. This can be found either by counting the number of binary digits (do not count don't cares) in the left hand side of the ESPRESSO output equations or by looking on the last line of the ESPRESSO output file which starts with a "#" in front of it. The line contains an expression such as "in= (number)". That number is the total number of AND gate inputs.

  • Total # of OR Gate Inputs: This is the total amount of inputs to all of the OR gates in the circuit. This can be found either by counting the ones on the right hand side of the ESPRESSO output equations or by looking on the last line of the ESPRESSO output file which starts with a "#" in front of it. The line contains an expression such as "out= (number)". That number is the total number of OR gate inputs.

  • Total # of INV Gate Inputs: Equal to the amount of inputs for a component.

  • Total # of Gate Inputs: Total AND inputs + Total OR inputs. (Not counting INV gates)

  • Delay: Critical Path of Circuit. To do this one must get the # of AND gate inputs & OR gate inputs for an individual output and then technology map the respective AND & OR gates for that output to get the "levels" of 2-input AND gates & 2-input OR gates used. To get the levels of inputs you must take the log (base 2) of the # of inputs. For example, an output having 8 AND gate inputs would technology map down to  3 levels of 2-input AND gates. Once you have figured out the technology-mapping "levels" for both the AND gate and the OR gate, multiply those by the delay for a 2-input AND/OR gate (.12ns & .14ns) This gives the critical path delay from the and gate level to the or gate level. Lastly add the delay of an inverter gate to your previous solution to get the total delay.

  • Logic Synthesis Time: Time taken for ESPRESSO to minimize equations and create output. The last line of the ESPRESSO output file which starts with a "#" in front of it  contains the time taken to minimize it. (can be varied by servers)

[back to top]


 N-bit Adder

 

 espresso input files   (1bit -> 8bit):  a_1   a_2   a_3   a_4   a_5   a_6   a_7   a_8

 -generated by program: espresso.cpp

 

 espresso output files (1bit -> 8bit): 1bit   2bit   3bit   4bit   5bit   6bit   7bit   8bit

 -obtained after running ESPRESSO

 

Size

(bits)

Inputs

Truth-Table Rows

Gate

Count

Transistor Count

Total # of

AND Gate Inputs

 Total # of

OR Gate Inputs

Total # of

Gate Inputs

 

 Delay (ns)

Logic Synthesis Time

(seconds)

1 2 4 7 29 6 3 9 0.29 0.01
2 4 16 18 78 32 11 43 0.69 0.01
3 6 64 41 187 115 31 147 0.95 0.01
4 8 256 88 408 340 75 415 1.23 0.04
5 10 1028 183 880 892 167 1059 1.37 0.33
6 12 4096 374 1834 2196 355 2551 1.51 3.27
7 14 16384 757 3743 5196 735 5931 1.77 42.09
8 16 65536 1539 7647 11972 1499 13271 1.91 1798.60

[back to top]


N-bit Comparator

 

 espresso input files   (1bit -> 8bit):  ci_1   ci_2   ci_3   ci_4   ci_5   ci_6   ci_7   ci_8

 -generated by program: espresso.cpp

 

 espresso output files (1bit -> 8bit): co_1  co_2  co_3  co_4  co_5  co_6  co_7  co_8

 -obtained after running ESPRESSO

 

Size

(bits)

Inputs

Truth-Table Rows

Gate

Count

Transistor Count

Total # of

AND Gate Inputs

 Total # of

OR Gate Inputs

Total # of

Gate Inputs

 

 Delay (ns)

Logic Synthesis Time

(seconds)

1 2 4 9 39 8 4 12 0.29 0.01
2 4 16 17 73 32 10 42 0.55 0.01
3 6 64 31 137 96 22 118 0.81 0.01
4 8 256 57 261 256 46 302 0.95 0.01
5 10 1028 107 505 640  94 734 1.21 0.07
6 12 4096 205 989 1536 190 1726 1.35 0.42
7 14 16384 389 1953 3584 382 366 1.49 2.43
8 16 65536 785 3877 8192 766 8958 1.63 25.93

[back to top]


N-bit Multiplier

 

 espresso input files   (1bit -> 8bit):  m_1   m_2   m_3   m_4   m_5   m_6   m_7   m_8

 -generated by program: espresso.cpp

 

 espresso output files (1bit -> 8bit): o_m1 o_m2 o_m3 o_m4 o_m5 o_m6 o_m7

 -obtained after running ESPRESSO

 

Size

(bits)

Inputs

Truth-Table Rows

Gate

Count

Transistor Count

Total # of

AND Gate Inputs

 Total # of

OR Gate Inputs

Total # of

Gate Inputs

 

 Delay (ns)

Logic Synthesis Time

(seconds)

1 2 4 5 19 2 1 3 0.29 0.00
2 4 16 15 63 22 8 30 0.55 0.00
3 6 64 44 202 136 38 174 0.83 0.01
4 8 256 144 696 735 156 891 1.23 0.21
5 10 1028 507 2505 3555 613 4168 1.51 3.27
6 12 4096 1973 9829 17657 2591 20248 1.79 163.52
7 14 16384 7538 37648 81575 10317 91892 2.07 4765.41
8 16 65536

N/A - Logic Synthesis Time over 24 hours

[back to top]


N-bit Carry-Look Ahead Adder

 

 espresso input files   (1bit -> 8bit):  cl_1   cl_2   cl_3   cl_4   cl_5   cl_6   cl_7   cl_8

 -generated by program: espresso.cpp

 

 espresso output files (1bit -> 8bit): clo_1 clo_2 clo_3 clo_4 clo_5 clo_6 clo_7 clo_8

 -obtained after running ESPRESSO

 

Size

(bits)

Inputs

Truth-Table Rows

Gate

Count

Transistor Count

Total # of

AND Gate Inputs

 Total # of

OR Gate Inputs

Total # of

Gate Inputs

 

 Delay (ns)

Logic Synthesis Time

(seconds)

1 2 4 9 39 12 3 15 0.55 0.00
2 4 16 26 118 120 22 142 0.95 0.00
3 6 64 79 377 756 124 880 1.23 0.01
4 8 256 276 1356 4080 632 4712 1.63 0.10
5 10 1028 1049 5215 20460 3056 23516 1.91 1.38
6 12 4096 4126 20594 98280 14304 112584 2.19 12.86
7 14 16384 16419 82053 458724 65472 524196 2.47 224.79
8 16 65536 65576 327832 2097120 294784 2391904 2.87 6989.00

[back to top]


© 2003 University of California, Riverside, Department of Computer Science and Engineering,  Riverside, CA 92521

Questions/Concerns/Corrections? - ksewell@cs.ucr.edu