| OCR Text |
Show in the original constraint. The choice of a particular solution does not matter as long as the particular solution has Boolean value for every variable involved in the Boolean function. For example, the odd parity constraint on the bit-variables of a bit-vector B [2 : 0] is considered. This constraint can be expressed as a Boolean equation S = B[2] © B[\] © B[0] = 1. This Boolean equation has solutions; if (B[2], B[l], B[0]) = (0,0,1) be a particular solution, then the general solutions for (B[2], J?[l], #[0]) are (pb2 •PbTWpbo, Pbi * Pb2 0 Pbo, Pbo + Pb2 © P6i ) , where pb2 ,Pbi,Pbo are parametric Boolean variables. 3.7 Hierarchical Constraint Solving The methods described in the previous section treat every constraint uniformly and thus cannot take advantage of properties of the operators used in these constraints. For these methods, every constraint is converted into a Boolean expression involving bit-variables and Boolean operations on these bit-variables. The resulting Boolean equation is solved for a solution. The method adopted in this thesis is to solve the constraints on the bit-variables and bit-vectors separately; this allows the constraint solving procedure to take advantage of properties of the operators involved in the given constraints. The main property that is exploited by this method is the recursive definition of commonly used operators such as < over the bit-vector structure of their arguments. For example, the formula (A < B) on two TV-bit vectors A and B can be defined in terms of the most significant bits (MSBs) of A and B and < on two (N - l)-bit subvectors (for N > \) of A and B ignoring their MSBs. 3.7.1 Solving Bit-variable Constraints First, the constraints on bit-variables that are expressed as a sum-of-products formula YliL^ C*‘ = 1 (where £ denotes logical or) are considered. To obtain 29 |