The Satisfiability (SAT) problem is summarized by the following question:
Can the variables be set to True / False such that the given Boolean formula is True?
For example, given the formula f(x,y,z)=(x || y) & (!x || z),
- Finding out how to assign True/False to x, y, and z so that the entire formula is True is an SAT problem.
This seems simple enough,
- but when the number of variables is in the thousands or tens of thousands
- and the constraints are in the hundreds of thousands, complete exploration becomes impossible.

2. What kind of SAT solver is MiniSat
MiniSat is a high-performance CDCL-based SAT solver.
To summarize its features:
- CDCL (Conflict-Driven Clause Learning)
- Very small codebase
- Fast and stable
- Easy to embed as a library in other tools
So, while MiniSat can be used on its own, it is actually used more for the following purposes.
- Formal Verification tool internal engine
- EDA tool decision engine
- Research prototype baseline solver
- SMT/PB solver backend SAT engine
In other words,
MiniSat is more of a "standard engine in the SAT solver world"
3. But real-world problems don't end with SATs
The problem is that real-world constraints aren't always Boolean.
For example, this constraint is not a SAT:
3a + 2b + c ≥ 4
Here, a, b, and c are Boolean variables, but the expression itself is a constraint with integer weights.
This constraint is called a Pseudo-Boolean (PB) constraint.
PB problems are characterized by:
- Variables are Boolean
- Constraints are linear integer inequalities
- Often have an optimization problem (min/max)
4. The core idea of MiniSat+
MiniSat+ is not a new solver.
Translate the PB constraint into SAT, and then solve it with MiniSat
This is the structure:
PB problem
↓ (translation)
SAT problem
↓
MiniSat
MiniSat+ is responsible for this translation layer.
5. How to change PB → SAT
MiniSat+ uses the following logic circuit-based techniques to change PB constraints to SAT.
- BDD (Binary Decision Diagram)
- Adder network
- Sorting network
The key is:
- Create a logic circuit
- Determine if the PB constraint is satisfied
- Convert that circuit to CNF with Tseitin transformation
- Input the result into MiniSat
In other words,
"Create a circuit that checks for constraints,
6. Why switch to SAT
You may ask, why not just write your own PB solver?
- SAT solvers have been optimized for decades
- Clause learning, heuristics, and propagation are very powerful
- For "almost SAT problems",
- SAT conversion + MiniSat is often faster than PB native solver
- Mostly Boolean structures
- Only some weight/count constraints
- Formal equivalence checking
- Choosing a minimal fix set in ECO
- Constraint-based synthesis
- Resource / option selection problems
- Some STA/CDC/DFT internal decision logic
- MiniSat
→ High-performance Boolean SAT solver
→ Fast engine for solving choice problems - MiniSat+
→ Integer weighted constraints (PB) to SAT. Leverages the power of MiniSat - Why use it
→ SAT solver is still the most powerful combinatorial search engine
→ Structurally well-suited for EDA/Verification
- SAT conversion + MiniSat is often faster than PB native solver
especially for EDA/Verification problems:The MiniSat+ approach works well on these structures.
7. Where is it used from an EDA perspective
From an engineer's perspective, the MiniSat series is a natural fit for the following problems.The common thread is that they all have this in common.
Selection variables + constraints + combinatorial explosion
The moment you try to manually handle this with human logic, it becomes a maintenance nightmare.
SAT solver solves this at the engine level.