A multiple-output circuit computes more than one Boolean function from the same set of inputs. When two outputs share product terms, you can reduce total cost by sharing the gates that produce those terms instead of duplicating them.

The key insight: if both and use the term , build one AND gate for and feed its output into both ‘s and ‘s OR gates. You’ve saved a gate.

Example

Two functions:

Each function has GIC of on its own. Built as two completely separate circuits, total is .

But the first two terms ( and ) appear in both. If you build them once and feed both ORs, you save inputs:

Combined cost is — a -input savings, achieved by sharing the two common ANDs and their literals.

When sharing pays

Sharing is worthwhile when the same product term appears in multiple outputs and the cost of an extra wire (running the shared term to multiple ORs) is less than the cost of duplicating the gates. In practice this is almost always true.

To find sharing opportunities systematically: do a Karnaugh Map for each output, and look for groups that show up in more than one map. Tools like Espresso do this automatically when minimizing multi-output Boolean functions.

This generalizes beyond SOP. The same logic applies to Multilevel synthesis — once you’ve factored an expression into intermediate signals, those intermediates can be shared by other outputs that use the same factor.

A PLA takes advantage of multi-output sharing structurally: its AND plane produces a fixed set of product terms, and its OR plane lets every output draw on any subset of those terms. That’s exactly what makes a PLA more area-efficient than separate two-level circuits when the outputs overlap in their product terms.