Introduction to CAFE Yu Hen Hu September 25, 2000
Introduction CAFÉ (Connection Arrays From Equations) is a Boolean functions simplification program that can simultaneously simplify a set of Boolean functions sharing the same set of Boolean variables. To use CAFÉ, you create an input file which consists of –Function specifications: A list functions to be minimized. Can be in Boolean equations, truth table, minterm, maxterm, or tabular form –Process specification: specify what kind of output you want
CAFÉ Syntax A sample CAFÉ program: Full Adder g=a*b, cout=g+p*cin. c s cout. Variables: case sensitive, but command is case in- sensitive. Boolean operators: -, ~, /: not *, &: AND $, ~&: XOR #: A*~B !, ~|: NOR +, |: OR () punctuation,: end equation.: end last equation
Function Specifications : –var_out = Boolean_expr. –Optional: dummy = all input variables AND together. : –Input var list. E.g. 3 a b cin. –var_out = minterm # : –Same as minterm : Input list: 3 a b c. x = 1x1 x10 = 000, dont cares : 4 a b c d. input variable 3 w x y 0 0 x – 0 x 1 x - 1 1
Process specifications and Commands Process specifications tells what format of the output should be. C: connection array E: equations T: truth table Advanced options: – K, L, R: not covered here. Terminal command in running CAFÉ: cafe infile outfile
An example Connection Arrays from Equations Sep :08:59 Page 1 File: adder1 Run Options: 1: adder1 2: 3 a b cin. 3: s = , 4: co = : 6: e s co. s = -a*-b*cin + -a*b*-cin + a*-b*-cin + a*b*cin co = b*cin + a*cin + a*b
Truth Table Output Connection Arrays from Equations Sep :39:37 Page 1 File: adder1 Run Options: 1: adder1 2: 3 a b cin. 3: s = , 4: co = : 6: t s co. 3 Input Variables 2 Output Variables 8 Cube Truth Table abc sc i o n