[VLSI CAD] MiniSAT?

[VLSI CAD] MiniSAT?
Photo by Antoine Dautry / Unsplash

SAT(Satisfiability) 문제는 다음 질문으로 요약된다.

주어진 Boolean 수식이 True가 되도록
변수들을 True / False로 정할 수 있는가?

예를 들어, f(x,y,z)=(x || y) && (!x || z) 라는 수식이 있을 때,

  • x, y, z에 True/False를 어떻게 할당하면 전체 수식이 True가 되는지를 찾는 것이 SAT 문제다.

이건 단순해 보이지만,

  • 변수 수가 수천~수만 개
  • 제약이 수십만 개가 되면 완전 탐색은 불가능해진다.
    이걸 효율적으로 푸는 것이 SAT solver의 역할이다.
MiniSat Page

2. MiniSat은 어떤 SAT solver인가

MiniSat은 고성능 CDCL 기반 SAT solver다.

특징을 요약하면:

  • CDCL (Conflict-Driven Clause Learning)
  • 매우 작은 코드베이스
  • 빠르고 안정적
  • 다른 툴에 라이브러리처럼 embedding하기 쉬움

그래서 MiniSat은 단독으로 쓰이기도 하지만,
실제로는 다음과 같은 용도로 더 많이 쓰인다.

  • Formal Verification tool 내부 엔진
  • EDA tool의 decision engine
  • Research prototype의 baseline solver
  • SMT / PB solver의 backend SAT engine

즉,

MiniSat은 “SAT solver계의 표준 엔진”에 가깝다

3. 그런데 현실 문제는 SAT만으로 안 끝난다

문제는 현실의 제약이 항상 Boolean만은 아니라는 점이다.

예를 들어 이런 제약은 SAT가 아니다.

3a + 2b + c ≥ 4

여기서 a, b, c는 Boolean 변수지만,
식 자체는 정수 가중치를 가진 제약이다.

이런 제약을 Pseudo-Boolean (PB) constraint라고 부른다.

PB 문제의 특징:

  • 변수는 Boolean
  • 제약은 선형 정수 부등식
  • 최적화 문제(min/max)가 붙는 경우도 많음

4. MiniSat+의 핵심 아이디어

MiniSat+는 새로운 solver가 아니다.
핵심 아이디어는 단 하나다.

PB 제약을 SAT로 “번역”한 뒤,
MiniSat으로 푼다

즉 구조는 이렇다.

PB 문제
↓ (translation)
SAT 문제

MiniSat

MiniSat+는 이 translation layer를 담당한다.


5. PB → SAT는 어떻게 바꾸는가

MiniSat+는 PB 제약을 SAT로 바꾸기 위해
다음과 같은 논리 회로 기반 기법을 사용한다.

  • BDD (Binary Decision Diagram)
  • Adder network
  • Sorting network

핵심은:

  • PB 제약을 만족하는지 판단하는 논리 회로를 만든 뒤
  • 그 회로를 Tseitin transformation으로 CNF로 변환
  • 결과를 MiniSat에 입력

즉,

“제약을 검사하는 회로를 만들고,
그 회로가 항상 True가 되도록 강제한다”

6. 왜 굳이 SAT로 바꾸는가

직접 PB solver를 쓰면 되지 않냐는 질문이 나온다.
논문과 실무에서의 답은 명확하다.

  • SAT solver는 수십 년간 최적화됨
  • Clause learning, heuristics, propagation이 매우 강력
  • “거의 SAT에 가까운 문제”에서는
    • PB native solver보다
    • SAT 변환 + MiniSat이 더 빠른 경우가 많음

특히 EDA/Verification 쪽 문제는:

  • 대부분 Boolean 구조
  • 일부만 가중치/카운트 제약

이 구조에서 MiniSat+ 접근이 잘 먹힌다.


7. EDA 관점에서 보면 어디에 쓰이나

엔지니어 관점에서 보면 MiniSat 계열은 다음 문제에 자연스럽게 대응한다.

  • Formal equivalence checking
  • ECO에서 최소 수정 집합 선택
  • Constraint-based synthesis
  • Resource / option selection 문제
  • 일부 STA/CDC/DFT 내부 decision logic

공통점은 모두 이렇다.

선택 변수 + 제약 조건 + 조합 폭발

이걸 사람이 로직으로 직접 다루는 순간 유지보수 지옥이 된다.
SAT solver는 이걸 엔진 레벨에서 해결해준다.


8. 한 문단 요약

  • MiniSat
    → 고성능 Boolean SAT solver
    → 선택 문제를 빠르게 푸는 엔진
  • MiniSat+
    → 정수 가중치 제약(PB)을 SAT로 변환
    → MiniSat의 성능을 그대로 활용
  • 왜 쓰이나
    → SAT solver는 여전히 가장 강력한 조합 탐색 엔진
    → EDA/Verification에서 구조적으로 잘 맞음

Enjoyed this article?

Get deep-dive semiconductor analysis and career insights delivered weekly. Free forever — no paywall, no upsell. Funded by sponsorships with a strict editorial firewall (Editorial Standards).

Work with me

Consulting · Collaboration · Support

Paid 1:1 technical consulting, speaker invitations, collaboration proposals, or just want to say thanks — all welcome.

View options →
VLSI Korea Free forever · No paywall · Weekly semiconductor insights from practicing engineers
Support