恒定输入如何影响问题的 SAT 表述?
How does constant inputs affect SAT formulation of a problem?
假设我有一个带有 N 个输入和 1 个输出的黑盒电路。
我想固定 M 个输入的值并找到电路可满足的其余输入 (N-M) 的值。如果我手动修复 verilog RTL 中的 M 输入,并将其转换为 CNF(使用 abc),这会产生正确的结果吗?这是解决这类问题的正确方法吗?
您问题的原始搜索 space 有 2^N
个条目。通过修复 M
输入,搜索 space 减少了 2^M
倍并且有 2^(N-M)
个条目。
根据您对固定 M
输入值的选择,您可以简化搜索或减少搜索 space 太多,最终没有解决方案。
你的黑盒子是一个组合电路,输出完全取决于输入的当前状态?在 RTL
(寄存器传输 level/language)设置中,您还可以描述顺序机制,其中输出还取决于先前的输入。
考虑到固定输入被称为Boolean Constraint Propagation。这基本上简化了您的电路,因为可以移除所有具有预定输出的元件。示例:具有一个或多个错误输入的 AND
具有 false 输出。具有一个或多个 true 输入的 OR
具有 true 输出,等等。其他简化包括删除双重否定和 XOR/XNOR
门的反向输入对。
你可以看看bc2cnf, a translator from a Boolean netlist format to a SAT solver digestible DIMACS/CNF file. Similarly to ABC, bc2cnf will propagate constant inputs and deliver a fairly optimized CNF。
假设我有一个带有 N 个输入和 1 个输出的黑盒电路。
我想固定 M 个输入的值并找到电路可满足的其余输入 (N-M) 的值。如果我手动修复 verilog RTL 中的 M 输入,并将其转换为 CNF(使用 abc),这会产生正确的结果吗?这是解决这类问题的正确方法吗?
您问题的原始搜索 space 有 2^N
个条目。通过修复 M
输入,搜索 space 减少了 2^M
倍并且有 2^(N-M)
个条目。
根据您对固定 M
输入值的选择,您可以简化搜索或减少搜索 space 太多,最终没有解决方案。
你的黑盒子是一个组合电路,输出完全取决于输入的当前状态?在 RTL
(寄存器传输 level/language)设置中,您还可以描述顺序机制,其中输出还取决于先前的输入。
考虑到固定输入被称为Boolean Constraint Propagation。这基本上简化了您的电路,因为可以移除所有具有预定输出的元件。示例:具有一个或多个错误输入的 AND
具有 false 输出。具有一个或多个 true 输入的 OR
具有 true 输出,等等。其他简化包括删除双重否定和 XOR/XNOR
门的反向输入对。
你可以看看bc2cnf, a translator from a Boolean netlist format to a SAT solver digestible DIMACS/CNF file. Similarly to ABC, bc2cnf will propagate constant inputs and deliver a fairly optimized CNF。