LIBRARY OF THE UNIVERSITY OF ILLINOIS AT URBANA-CHAMPAIGN r\o.2&T-292 cop. 2 Digitized by the Internet Archive in 2013 http://archive.org/details/designprocedures288whit /rt tzZ^X- Report No. 288 DESIGN PROCEDURES FOR CELLULAR LOGIC ARRAYS by Willard Francis Whitaker III September 20, 1968 JHE LIBRARY. OF. i NOV 9 1972 UNIVERSITY OF ILLINOIS AT URBANA-CHAMPAiGfcJ DEPARTMENT OF COMPUTER SCIENCE I \\ Mq:lHiiW*]aiMl?L«lKS WMMH Report No. 2^8 DESIGN PROCEDURES FOR CELLULAR LOGIC ARRAYS* by Willard Francis Whitaker III September 20, 1968 Department of Computer Science University of Illinois Urbana, Illinois 6l801 Submitted in partial fulfillment of the requirements for the degree of Master of Science in Electrical Engineering, September 1968. Ill ACKNOWLEDGEMENT The author wishes to thank his advisor, Professor Sylvian Ray, Mrs. Donna Stutz for typing the thesis, and John Otten for preparing the drawings . IV TABLE OF CONTENTS Page 1. INTRODUCTION 1 2. DESCRIPTION OF THE ARRAY AND NOTATION 3 3. COMBINATIONAL CIRCUITS 7 Decomposition of Functions 7 Algorithm for Single-Output Combinational Circuits 10 Proof That Algorithm Terminates 12 Upper Bounds on Size of Array lU Example l6 h. SEQUENTIAL CIRCUITS 20 Form and Decomposition of Functions 20 Algorithm for Sequential and Multiple-Output Circuits 22 Examples 23 5. CONCLUSION 31 BIBLIOGRAPHY 33 LIST OF FIGURES Figure Page 1 Basic Cell Inputs and Outputs 1+ 2 Numbering of Cells k 3 Generation of f from u, v, and w 8 k Example l._ Combinational Circuit 19 Example 2. -Sequential Circuit 26 6 Example 3-Feedback Shift Register 30 1 . INTRODUCTION Several types of cellular logic arrays have "been developed. These arrays consist of a number of identical cells which are con- nected to perform logical functions. The cells usually have parameters which determine the function to be produced in each cell and the inter- connections among the cells. One of the more significant of the basic cells which have been designed is the cutpoint cell developed by R. C. Minnick. This cell produces combinational and sequential functions of two variables. In his article, Minnick describes the cutpoint cells and presents an algorithm for constructing an array of these cells to produce a given function. H. A. Finkelstein, in seeking an improvement over the cutpoint cell, has designed cells which can implement functions of three variables 2 in one cell. However, he did not develop an algorithm for programming an array of these cells to produce more complicated functions. Minnick, R.C., "Cutpoint Cellular Logic", IEEE Transactions on Electronic Computers, December I96U - 2 Finkelstein, H. A. , "Design of Digital Conrputer Circuits Using a Basic Logic Cell" S M.S. Thesis, University of Illinois, Department of Computer Science Report No. 287 May 2k , 1968. The purpose of this thesis will be to develop procedures for programming an array of cells similar to Finkelstein' s hexagonal cells. It would be desirable to have the capability of forming an array to produce any combinational or sequential logic function. The procedures should specify an array which makes reasonably efficient, but not necessarily optimum, use of the cells. The pro- cedures should completely specify the array, so that a computer can be used to carry out the procedures and control the array without further intervention. 2. DESCRIPTION OF THE ARRAY AND NOTATION The cell used is a hexagonal cell similar to those designed by Finkelstein. This cell has three inputs and three outputs, as shown in Figure 1. It has the advantage over a four-terminal square cell that every cell in an array can have the same input-output con- figuration while allowing for three inputs to each cell. Also, in the examples given by Finkelstein, usually fewer hexagonal cells than square cells are required to realize a given function. The cells are connected into an array as shown in Figure 2. The cells are numbered according to coordinates i,j. The coordinate system begins at the lower right-hand corner of the array and uses i as the vertical coordinate and j as the horizontal coordinate. The output will be produced in cell 1,1 at the lower right-hand corner of the array. The inputs to cell i.j are A.,, B.., and C.., and the ij ij ij outputs are D. . , E. . . and F. . . ij ij ij The set of functions realizable in each cell has been modified to facilitate use of the algorithm which will be presented. These functions are listed in Table 1. Each cell is specified by a five-element vector Z. . = (Z..., Z.._, Z.._ s Z.._, Z.._,). The first three components ij iJA' ijB' ijC' ijD* ijE' * of Z. . specify whether the input or its complement is to be used, or the input is to be inhibited. B A * ■►D FIGURE I. BASIC CELL INPUTS AND OUTPUTS r v^( 1 r >f< 1 r V< 1 r >r^ \ \ \ \ \ 1 — v i =4 i = 3 \ \ \ V • -\- i = 2 \ \ \ \ i = I J + \» \* \<° \" FIGURE 2. NUMBERING OF CELLS If Z... = 0, the A input is to be inhibited. If Z = 1, 1 J A X J A the A input is to be used as is. If Z = 2, The A input is to be 1 J A complemented. The B and C inputs are specified similarly. In Table 1 expressions such as (A, A) are used. This expression means that A to be used if Z. ,. = 1, and A is to be used if Z. JA = 2. If Z. . = 0, ljA ljA ijA the expression is to be deleted. The F output is C if Z. .„ is or 1, ijC and is c" if Z. ,_ = 2. TABLE 1: FUNCTIONS OF CELL Z. JT ^ or Z.,„ Function generated at D or E ljD iJE 1 2 1 3 (A,A)(B,B)(C,C) k (A,A) + (B,B) + (C,C) 5 (A, A) © (B,B) © (C,C) 6 (A,A)(B,B)(C,C) + (A,A)(B,B)(C,C) 7 (C,C)(A,A) + (C,C)(B,B) 8 (A,A)(B © C) + (A,A)(B,B)(C,C) 9 (A,A)(B © C) + (A,A)(B,B)(C,C) Flip-flop inputs next output (A, A) (B,B) (C,C) D = Y E = Y 1 1 y y 1 1 1 l 1 i 1 1 y y d d y y 3. COMBINATIONAL CIRCUITS Decomposition of Functions Since three-input cells are being used, it is desirable that each function be decomposed into three functions. One of these three must be an input variable or its complement, since only these are available at the C input. Any function of n variables can be expressed in terms of one input variable and two functions of n-1 variables. f(x l5 ...,x n ) =x n g(x 1 ,...,x n _ 1 ) + xh(x 1 ,...,x n _ 1 ) Proof: Express f in sum-of -products form and factor out all occurences of x and x . n n f(x l5 ...,x n ) ^^(x^...^) + x n v(x 1 ,...,x n _ 1 ) + w(x 1 ,...,x n _ 1 ) = xu + xv+(x + x )w n n n n = x (u + w) + x (v + w) n n = x g(x , . . . ,x . ) + x h(x_, ,. . . ,x ) n A* n-1 n 1 n-1 for some functions of n-1 variables u, v, w, g, and h such that g = u + w and h = v + w. u, v, and w have no common terms. Figure 3 illustrates how f can be generated in this manner. ♦ f FIGURE 3. GENERATION OF f FROM u, v, AND w. Basically, the algorithm implements single-output combina- tional functions in a tree structure with cell assignments to fit the tree to the restrictions of the array. The functions are decomposed in the manner shown above. However, if u, v, or w is zero, a simpler arrangement is used than that shown in Figure 3- The only case where both outputs of a cell are used is illustrated in Figure 3, and both outputs are w. Therefore, it is possible to let both outputs of each cell be the same. The output function will be f. .. A push-down stack, L, will be used to store the locations of branch points to be returned to. The top location of L is L . The location stored in L will be the last one stored there which has not yet been read out . Each point where an input variable is found at the A or B input to a cell corresponds to a branch of the array. The branch consists of all cells connected in a path from this point to the output, plus any cells that drive this input. The branches are numbered in the order of implementation by the algorithm. This numbering corre- sponds to the location of the branch in the array, numbered from upper right to lower left. 10 Algorithm for Single-Output Combinational Circuits 1. Initially, i = 1, J = 1, f = f (x , . . . ,x ) . 2. If C. is specified: a. If Z... . . J 2, C. - C... , . i+l,j-l,C ij i+I, j-1 b. If Z.^ n . _ = 2, C. . = C. , , _ i+I, j-1, C ij i+I, j-1 3. If C, n , _ is not specified: i+l, J-1 a. If some x^ appears in every term of the minimal S of P expansion of f . , let C. . = x. (if more than one such x_ , use the largest k). t>. Otherwise, choose from the input variables on which f . . ij depends the one with the largest k, and let C. . = tl. ij k k. If cell i+1, j is unused, go to 9. 5. Iff., does not depend on C. j5 let f. .., - f. ,; ij ij i,J+l iJ Z. . = (1,0,0,U,U); set j = j+1; and go to 2. 6. If g. . j and h., ± 0, let f. ,._ = f. ,; Z. . = (l,0,0,U,M; ij ij i.J+1 ij ij set j = j+1; and go to 2. 7. If f . . = C or f . . = c": ij iJ a. If f . . = C, let Z.. = (0,0,1,U,U). ij ij b. Iff.. = C, let Z. . = (0,0, 2,1+, U). ij ij c. If L is empty, stop. d. Set i,j = L and go to 2. 8. (Either g or h is zero.) a. If g. i 0, let Z = (1,0,1,3,3), and f ± J+1 = & ± y b. If h. . t 0, let Z. . = (1,0,2,3,3), and f. _ , = h. .. ij iJ i.j+l ij c. Set j = j+1, and go to 2. 11 9. (Cell i+1, j is unused.) If f,, does not depend on C. j5 let f = f ; Z = (0,1,0,U,U); set i = i+1; and go to 2. 1+-L j J 1 J 1 J 10. If neither g. . = nor h = 0, go to 13. J- J J- J 11. If f . . ± C. , and f . . j C. . , go to 12. a. If z is unspecified and cell i+1, j-1 is unused, 1 , J — -L go to 11. d. (C.., or C. . is input to B. n . and C. is unspecified. ) b. If f = C , let Z = (0,0.,1,U,U). -L J J- J J- J c. If f . . = C. ,, let Z. . = (0,0,2,U,U) d. If L is empty, stop. e. Set i,j = L and go to 2. 12. (Either g. . or h.. is zero.) a. If g j 0, let Z = (0,1,1,3,3) and f = g . b. If h. . i 0, let Z. . = (0,1,2,3,3) and f. , . = h. .. c. Set i = i+1 and go to 2. 13. If w. . = 0, let Z. . = (1,1,1,7,7); f. .... = g. .; ij ij i,J+l ij f . = h ; set L = i,j+l; set i = i+1; and go to 2. 1 + -L»J IJ 1 Ik. Let z.j = (1.1.1.7.7). andf 1+1) J+1 =v... a. If u.j f 0, let f. >J+2 = u.j; Z. jJ+1 = (1.1.0.4.1.); and set L = i,j+2 b. If u. . = 0, let Z. . , = (0,1,0,U,U). ij i»j + l o. If v. . 4 0, let f. +2jJ = v. j; Z. +lj . = (l.l.O.U.U); set L = i+1, j+1; set i = i+2; and go to 2. d. Let Z . = (l,0,0,U,U); set i = i+1, j = J+l; and go to 2, 1+-L , J 12 Proof That Algorithm Terminates I. Any function of n variables can be produced if any function of n-1 variables can be produced and if all previous branches of the array terminate. 1. '. (x , . . . ,x ) is to be produced at the output of cell i,j. 1 , j x n 2. If C is not specified, it will be specified so that f. . i.J i » J depends on C . 3. If cell i+1, j is not previously used (this will be the case until the first branch terminates, since i does not decrease except when a branch terminates) a. If f. . does not depend on C. . , i is increased by 1. i.J i » J Either a cell will be reached where f. . depends on C. , . or a cell will be reached where i is greater than for any previously used cell (since all previous branches terminate), and C. . will be specified so that f. . depends on it. i.J i.J b. If f. . depends on C . ., the A and B inputs to cell i.j are i.J i.j functions of n-1 or fewer variables. h. If cell i+1, j has been previously used a. If f. . does not depend on C . , j is increased by 1. i.J i » J Eventually some cell will be reached such that f . . depends i >J on C. ., since all previous branches terminate. i.j b. If g. . or h. .is zero when f. . depends on C. ., the i.J i.J i,J i.J inputs to cell i,j will be functions of n-1 or fewer variables. c. Otherwise j is increased by 1. f. = f. .. Eventually a 1 . <] + -L i.J cell will be reached either satisfying the conditions of part b 13 or such that cell i+l,j is unused, assuming that all previous branches terminate. Cell i, j+1 is previously- unused, since i does not decrease in any branch. 5. In 3 and k t eventually a cell will be reached whose output is f. . and whose inputs are functions of n-1 or fewer variables. i.J II. Every Branch of the Array Terminates 1. For any cell i,j in the first branch, cell i+1 , j is not previously used, and C. .is not previously specified, since i does not decrease until the first branch terminates. There- fore, the first branch terminates. 2. Any function of one variable is produced in at most one cell. 3. If all previous branches terminate, any function of n variables can be produced in a finite number of cells from functions of n-1 variables. Since any function of one variable can be produced in one cell, all branches used in producing a function of n variables terminate. (Each terminates if all previous branches terminate.) k. Since the first branch terminates, and every branch terminates if all previous branches terminate, all branches terminate. lit Upper Bounds on Size of Array Any function of n variables can "be produced from three functions and an input variable in at most four cells , as in Figure 3. Therefore, if any function of n-1 variables can be produced in q cells (other than cells which only provide connec- tions), any function of n variables can be produced in at most 3q + h cells. Let q be an upper bound on the number of cells EL, (other than connecting cells) required to produce a function of k variables. Then q = 1, and q = 3q + h. If q =3 - 2, then a = 3q + h = 3(3 n ~ -2)+U=3 n -2, and any function of n variables can be produced with 3-2 cells other than connecting cells. From Figure 3 it is seen that no more than three cells (other than connecting cells) in each branch are required in reducing a function of n variables to functions of n-1 variables. Therefore the number of cells other than connecting cells in each branch is no greater than 3n. There are no connecting cells in the first branch, since no cells or C inputs have been previously specified. The number of connecting cells required in each branch is limited by the number of cells in the previous branches . The number of connecting cells required will be no greater than the total number of cells in the longest previous branch. (This number of cells will extend the branch to a point where the previous branches do not inter- fere.) If the upper bound, p , on the number of cells in branch k is a 15 nondecreasing function of k, the number of connecting cells will be no greater than p , and p can be p + 3n. p = 3n. If p = 3n(k-l), then p = 3nk. By induction, p = 3nk for all k. The number of branches in the array can be no greater than 3 , since this is the greatest number of functions of one variable used in implementing a function of n variables. Therefore, the total number of cells in an array which implements a function of n variables is no greater than _n-l n-1 _ k Z x 3nk = 3n ^ k = 3n ^- (l + 3 n_1 ) = § 3 n (l + 3 n ) The number of cells in a line in either the horizontal or vertical direction can be no greater than the maximum number of cells in a branch (n3 ), for no branch can extend farther than this from the output cell. These bounds can be used as a preliminary check to assure that an actual array is large enough to implement a given function, or they can be used in partitioning an array when more than one function is to be generated. The actual number of cells required for implementa- tion, however, may be much smaller than these bounds indicate. l6 Example 1. Combinational Circuit f = X 2 \ X 5 + X 2 X 3 X 5 + X l X 2 X 3 *k + X l X 2 X l+ X 5 + X 2 X 3 X 5 step 1. i = 1, j = 1, f xl = f(x lS x 2 , x 3 , x^, x ) 2. C. , . , is not specified. 1+1, J-l 3. x appears in every term of f , so C = x . h. Cell i+lj j is unused. 9. f depends on C . 10 - g ll = X 3 V h H = X U x 5 + X l X 3 X h + x l X U x 5 + X 3 X 5 13. w n = 0; u xl = g 1]L ; v^ = h^; Z^ = (1,1,1,7,7); f 12 == S ll' f 21 =: h ll' L T = 1,2; and i = 2. 2. C. in . n is not specified. i+l, J-l 3. No )c appears in every term of f ; let C = x . k. Cell 2, 2 is unused. 9. f 21 depends on C^ , 10 - §21 = X U + X l X 3 V h 21 = X l X 3 X U + X l X I+ + X 3 13 - w 21 s v 3 V° lU. Z 21 = (1,1,1,7,7); Z 22 = (1,1,0,4,1+); Z^ = (1,1,0, M); f 23 = U 21 = V f Ul = v 21 = X l X h + X 3 ; f 32 = W 21 = X l X 3 V L T = 2 >3; L T = 3,2; i = k. 2. ( i = U , j = l) C . is not specified. 1+-L , J — -L No x^ appears in every term of f. ; let C. = x. IT h. Cell 5,1 is unused. 9« fi depends on C, . 10. g Ul = x 3 ; h Ul = x ± + x 3 . 13 ' w Ul = x 3 Ik. z kl = (1,1,1,7,7); \ 2 = (o,i,o,U,U); z 51 = (1,1,0,U,U) u Ul = 0; V U1 = f 6l = *1 5 f 52 = W U1 = x 3 ; L T = 5 ' 2; i = 6 ' 2. (i = 6,j = l) C. in . _ is not specified. l+l, j-1 3 * f 6l = V C 6l = x r k. Cell 7,1 is unused. 10 ' g 6l = °' h 6l = X - 11. f^. = C^ n ; Z. . _ is unspecified, and cell i+1, j-1 is unused. 61 61 i,j-l x is input to B . i,j = L T = 5,2. 2. C^- is not specified. 3. f 52 =x 3 =C 52 U. Cell 6,2 is unused. 9. fj-p depends on C 10. g 52 = l; h 52 = 11. f = C ; Z 51 is specified. Z = (0,0,1,U,U); i,j = L T = 3,2, 2. C Ul = x^; Z Ulc = 1; C^ = C^ = x^ . k. Cell U,2 has been used. 5. f 32 = x 2 x 3 x h 6. g 32 = 0; h 32 = x ± x 3 3, Z 32 = (1,0,2,3,3); f 33 = h 32 = x ± x^ J = 3. 2. (i = 3, j = 3); C, = C is unspecified. 3. C 33 =x 3 h. Cell i+,3 is unused. 18 9- f-,-, depends on C . 10. h 33 = x^; g 33 = 12. Z 33 = (0,1,2,3,3); f U3 = X 1 ; i = k. 2. (i = k, j = 3) C 52 = x 3 ; Z 52C = 1; C^ = x^ k. Cell 5,3 is unused. 9. f^ does not depend on C^. f = f^ = x^ Z^ = (0 ,1 ,0 ,U ,U) ; i = 5 2. (i = 5, j = 3) C>- is not specified. 3 - C 53 =x l k. Cell 6,3 is unused. 9- f^- depends on C . 10. g = 0; h = 1. 11. ff = C ; Z is specified. Z = (0 ,0,2 ,U ,1+) ; i,J = L T = 2,3. 2 * C 3 2 = V Z 3 2C = 2; C 23 = °32 = V U. Cell 3,3 has been used. 5 ' f 23 =X U=^23 7. Z 23 = (0,0,2,U,1*); i,j = L T = 1,2. 2. C 21 = x 5 ; Z 21C = 1; C^ = x y h. Cell 2,2 has been used. 5 - f 12 = X 3 X 5 6- S 12 = X 3' h 12 = °* 8. Z 12 = (1,0,1,3,3); f 13 = g 12 = x 3 ; j = 3. 2. (i = 1, j = 3) C is not specified. 3. C 13 =x 3 k. Cell 2,3 has been used. 5. f _ = x depends on C . T. f 13 = C 13 ; Z = (0,0,1,U,U). L is empty, stop. 19 z> o i,J = L T = 1 >3 C 13 = °22 " 3Tl f does not depend on C . f 23 = f 13 Z 13 = (O' 1 ' ^^) i = 2 C 23 = °32 = X 2 Cell 3,3 has been used. £ = fe 23 "23 := X l Z 23 = (1,0,2,3,3) f 2k = x 1 C 2U " X l 3 2U = h^i = 1 2U f 2l| = °2U Z 2U = t°.°- 2 - U ^) L is empty, return k. Make the necessary connections 26 FIGURE 5. EXAMPLE 2: SEQUENTIAL CIRCUIT 27 3. Feedback Shift Register step i. fl = •/ *1 *^Q *3 li 17*11/ Y i = y 5 \-