We present a generalized method to attack fault diagnosis at the logic level that aims at localizing and differentiating fault types. In particular, we present an application of this method that aids in distinguishing opens and two-line shorts. While past work has addressed distinction between shorts and opens, we present an algorithm to generate more test patterns to narrow down the diagnosis callout based on type or location. In general, we are not limited to a few fault models as our description of the logic misbehavior is built on fault tuples. This becomes important in the area of fault and defect characterization. Results based on logic validation and SPICE simulations of extracted netlists indicate the usefulness and efficiency of our approach.