Sequential Optimization

Sequential optimization simplifies a circuit with registers by finding and merging signals that are logically equivalent over time. To deduce sequentially equivalent logic, the algorithm performs logic partitioning, fast simulation, and other proofing techniques. The following is an example of sequential equivalent logic:

// Two 3-bit counters with different encodings
Counter_A: 000 → 001 → 010 → 011 → 100 → 101 → 110 → 111 → 000...
Counter_B: 001 → 000 → 011 → 010 → 101 → 100 → 111 → 110 → 001...
Counters A and B, which depend on the same inputs and clock signal, have the same transition behavior, except that counter B's bit 0 is a logical inversion of counter A. After sequential optimization, the two counters are merged:
Counter_B[2:1] = Counter_A[2:1];
Counter_B[0] = !Counter_A[0];