Index Generation Functions

by Tsutomu Sasao

Published 24 October 2019
Index generation functions are binary-input integer valued functions.

They represent functions of content addressable memories (CAMs). Applications include: IP address tables; terminal controllers; URL lists; computer virus scanning circuits; memory patch circuits; list of English words; code converters; and pattern matching circuits.

This book shows memory-based realization of index generation functions. It shows:

  1. methods to implement index generation functions by look-up table (LUT) cascades and index generation units (IGU),
  2. methods to reduce the number of variables using linear transformations, and
  3. methods to estimate the sizes of memories,

with many illustrations, tables, examples, exercises, and their solutions.


A zero-suppressed decision diagram (ZDD) is a data structure to represent objects that typically contain many zeros. Applications include combinatorial problems, such as graphs, circuits, faults, and data mining. This book consists of four chapters on the applications of ZDDs.

The first chapter by Alan Mishchenko introduces the ZDD. It compares ZDDs to BDDs, showing why a more compact representation is usually achieved in a ZDD. The focus is on sets of subsets and on sum-of-products (SOP) expressions. Methods to generate all the prime implicants (PIs), and to generate irredundant SOPs are shown. A list of papers on the applications of ZDDs is also presented. In the appendix, ZDD procedures in the CUDD package are described.

The second chapter by Tsutomu Sasao shows methods to generate PIs and irredundant SOPs using a divide and conquer method. This chapter helps the reader to understand the methods presented in the first chapter.

The third chapter by Shin-Ichi Minato introduces the "frontier-based" method that efficiently enumerates certain subsets of a graph.

The final chapter by Shinobu Nagayama shows a method to match strings of characters. This is important in routers, for example, where one must match the address information of an internet packet to the proprer output port. It shows that ZDDs are more compact than BDDs in solving this important problem.

Each chapter contains exercises, and the appendix contains their solutions.

This book brings together five topics on the application of Boolean functions. They are:
  • 1. Equivalence classes of Boolean functions: The number of n-variable functions is large, even for values as small as n = 6, and there has been much research on classifying functions. There are many classifications, each with their own distinct merit.
  • 2. Boolean functions for cryptography: The process of encrypting/decrypting plaintext messages often depends on Boolean functions with specific properties. For example, highly nonlinear functions are valued because they are less susceptible to linear attacks.
  • 3. Boolean differential calculus: An operation analogous to taking the derivative of a real-valued function offers important insight into the properties of Boolean functions. One can determine tests or susceptibility to hazards.
  • 4. Reversible logic: Most logic functions are irreversible; it is impossible to reconstruct the input, given the output. However, Boolean functions that are reversible are necessary for quantum computing, and hold significant promise for low-power computing.
  • 5. Data mining: The process of extracting subtle patterns from enormous amounts of data has benefited from the use of a graph-based representation of Boolean functions. This has use in surveillance, fraud detection, scientific discovery including bio-informatics, genetics, medicine, and education.

Written by experts, these chapters present a tutorial view of new and emerging technologies in Boolean functions.