Module 3:Logic Optimization and Synthesis

Lecture 1,2 & 3 :Two level Boolean Logic Synthesis

In the matrix given below, row dominance are--PI2 dominates PI1 and PI3 dominates PI1 and PI2.

If cost of PI3 is not higher than PI1 and PI2 then, by eliminating PI1 and PI2, the simplified matrix is given below.

It may be noted that if the matrix is cyclic then none of the above three simplification procedures can be applied.

4.2   Branch-and-Bound Algorithm for selecting cover

The unate covering problem can be solved efficiently using Branch-and-Bound Algorithm. Now we will present the scheme and then illustrate the same with examples.

There may be multiple optimum solutions to the problem and our intension to find one of them. The search space can be defined as a subset of selected columns.; if there are n columns then solution space is . In the branch and bound procedure for this problem the solution space is enumerated in form of a binary search tree. A node corresponds to a column and the left (right) edge represents the column being (not being) considered in the cover. It may be noted that for all columns there may not be a node in the tree, because considering some column may result in elimination of some other due to dominance or inclusion due to essentiality. Therefore, if we can determine that a given part of the search space (i.e., sub-tree rooted at a non-leaf node) does not contain any solution better than the one we have found so far, then we can avoid exploring that part of the search space altogether. We start searching another branch by considering a column that was considered not to be taken in the cover. In addition, we may search other branch by not considering a column that was considered to be taken in the cover. Therefore, in branch and bound algorithm for unate covering problem, we resort to two basic ideas—organize the search space in from of a binary search tree and explore the branches of the tree. For efficiency, we need some scheme to estimate the lower bound cost of a solution (given a constraint matrix) without fully exploring the search space. When we find that exploring a given path would lead to more expensive solution than expected, we retract to other braches without exploring the path under question. In other words, at any given node of the search tree, we have selected and rejected some columns. These columns are identified by the path from the root of the tree to that node. Hence, at that node we have a partial solution. If the cost of a partial solution (from that node) exceeds the expected solution at a node, clearly we can abandon that path and track back. Branch and Bound then tries to establish whether a new best solution can still be found by proceeding from the current node in a different branch.