Compound fault extraction as described above can be reduced to the rectangular intersection problem. However, the problem is complicated by the need to report the faults by the objects listed in the overlapping fault primitives, and then to identify if the fault affects the same objects as a previously found fault. If one is found, then these faults must be merged. This must be repeated for each region formed by overlapping fault primitives. This can be very costly in terms of both space and time requirements of the program, especially for moderately sized circuits and large defect sizes where there will be many small overlapping regions involving many objects.
To help address these problems, two options have been added to Carafe. The first option, reduce fault primitives, instructs Carafe to perform preprocessing on the fault primitives before they are sent to the compound fault extractor. The fault primitives are sorted by the two objects in the circuit that they affect. For each pair of objects, all the fault primitives which affect those two objects are sent through the compound fault extractor to remove any overlapping. This has the effect of substantially reducing the input to the compound fault extractor by removing redundant information for large defect sizes. However, for smaller defects, this procedure will probably result in a decrease in performance, and thus should only be used on relatively large defect sizes. Note that when compound faults are disabled, this operation is performed on the fault primitives to remove some of the over-counting.
The second option, track critical areas, instructs Carafe to compute only the fault probabilities and not to remember the critical areas. This has the effect of reducing memory usage which may be necessary when extracting large circuits, but in no way affects the relative probabilities of the faults. One side effect is that you will not be able to view the faults in the graphical user interface.