Python的布尔函数优化器包

时间:2011-05-07 16:10:26

标签: python optimization hardware boolean-logic

我想以表格形式定义一个布尔函数(带有n个输入和m个输出)。我想找到一个实现该函数的最佳布尔表达式。这里的最优意味着,在硬件中实现它将需要尽可能少的门(可能每个门具有不同的成本)

我确信VHDL / Verilog合成器经常进行这种优化,基本上我也基本需要它。有某种卡诺求解器吗?或者,是否可以将问题指定为经典优化问题(SAT,整数编程)?我想用Python实现它,所以我主要是寻找一个已经完成这个的包。

1 个答案:

答案 0 :(得分:5)

找到最优解的算法具有指数复杂性,因此通常可用的工具寻求良好的实现而不是最佳实现。我不确定你的要求有多严格,或者你的职能有多大。

一种逻辑优化算法是Quine-McCluskey。有一个python implementation。但是,这仅涵盖了单输出情况。

$ ./qm.py -o 1,2,3
1X X1
$ ./qm.py -o 1,2
10 01
$ ./qm.py -o 0,15
1111 0000
$ ./qm.py -o 0,8,15
1111 X000

对于多个输出,最简单的策略是分别实现每个输出。它们之间可能存在一些重复的术语,可以很容易地共享;构建逻辑以最大化共享更加困难。