Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • Logic Synthesis Glossary
  • Logic Synthesis Cheatsheet
  • Synthesis Foundations14
  • Logic Optimisation and Mapping20
    • Boolean Optimisation
      • Constant Propagation
      • Redundancy Removal
      • Factoring, Collapsing and Sharing
      • AIGs, Depth and Area
      • Don't-Cares
    • Technology Mapping
    • Cell Libraries and Liberty
    • Structuring and Buffering
  • Constraints and Timing15
  • Sequential, FSM and Memory19
  • Datapath Synthesis14
  • Area, Power and Test14
  • Verification, ECO and Handoff15
  • Flows and Debugging15
  • Interview and Judgment11
Loading lesson

‹Boolean Optimisation
  1. Topics
  2. Logic Synthesis
  3. Logic Optimisation and Mapping
  4. Boolean Optimisation
  5. Don't-Cares

Part 2 · Logic Optimisation and Mapping · Intermediate

Don't-Cares

Satisfiability and observability don't-cares with a worked cover.

On this page

    Two kinds of don't-care

    A satisfiability don't-care is an input combination the environment never produces. An observability don't-care is a combination whose output nobody reads.

    Both let the optimiser pick whichever output value gives the smaller cover. The care set is everything else, where the function must stay exact.

    Kind

    Meaning

    Example

    Satisfiability

    Input never arrives

    One-hot bus with an all-zero code that never occurs

    Observability

    Output never read under some condition

    ALU flag ignored when the opcode is a move

    Using don't-cares

    Take a 3-input function with ON-set {111, 110} and don't-care set {101, 100}. Treating the don't-cares as 1 gives a single product term.

    The calc block counts the cover with and without the don't-cares. Without them the two minterms still merge; the don't-cares widen the term by dropping a literal.

    Diagram
    3 inputs -> 8 minterms
    ON-set: 110, 111 (2 minterms)
    DC-set: 100, 101 (2 minterms)
    OFF-set: 000, 001, 010, 011 (4 minterms)
    2 + 2 + 4 = 8 minterms
    without DC: 110 + 111 merge to 11x = ab (1 term, 2 literals)
    with DC: 1xx merges to 1-- = a (1 term, 1 literal)
    literal saving = 2 - 1 = 1 literal

    Common mistakes

    A wrong care set is a functional bug, not a missed optimisation. If the environment ever produces a combination marked unreachable, the hardware answers with whatever the minimiser chose.

    Common pitfall

    Never mark reset or power-up states as don't-care unless the spec says so. Those states always arrive, and the wrong answer there is the hardest kind to debug.

    Interview

    Likely probes: the two kinds and the trust question.

    • Satisfiability is about inputs that never arrive; observability is about outputs never read.

    • The 2 ON plus 2 DC minterms merge into the single literal a here.

    • Every don't-care is a claim about the environment, so each needs a source.

    Check yourself An input combination is marked don't-care but arrives in service. What happens?

    The circuit answers with the minimiser's arbitrary choice. The function is wrong for that input.

    Check yourself The ON-set is {110, 111} with no don't-cares. What is the minimal cover?

    The single term ab: both minterms share a = 1, b = 1 and differ only in c.

    Related topics

    • Previous: AIGs, depth and area

    • Next: Technology Mapping

    Previous

    21 / 139

    Next: Technology Mapping

    Up next

    Up nextTechnology Mapping

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Constant Propagation
    • Redundancy Removal
    • Factoring, Collapsing and Sharing