组合一组布尔方程

Combine a set of boolean equations

我有一个逻辑示意图,从输入到输出有很多层次。我想为每个输出找到一个简化的布尔方程。为了避免错误并提高效率,我计划将大型原理图分解为每个逻辑门的一个布尔方程,并找到一个工具来简化一组布尔方程,并为我指定为输出的选定项输出一个方程.

任何数学程序都可以,请帮忙。谢谢!

对于这种情况,我推荐Logic Friday 1。 您可以将电路输入为门图。 [Logic Friday 1][1] 然后会将您的条目转换为最小化的产品总和形式。还可以把这种二级形式变回多级门图。

多电平电路的简化绝非易事。在大量输入的情况下,您最终可能会得到大量的最小项(= 乘积之和)。根据 local transformations 简化电路可能更容易,您可以用实现相同功能的更简单的子电路替换给定数量的门。示例:AND(AND(x,y),z) 等同于 AND(x,y,z)。还要在你的电路中寻找实现相同功能的节点,从而可以将其删除。

您可能不应该寻找 smallest/simplest,而应该寻找 最快的赛道 。这是输入和输出之间延迟最小的电路。同样,延迟最小化是一个非常微妙的目标,取决于可用门类型的延迟属性。

另一种工具是bc2cnf. This commandline tool converts a gate netlist file into a product-of-sums CNF file. This CNF file can then be solved using a SAT solver。每个解都对应于乘积和形式的一个最小项。因此,这并没有直接向您展示一个简化的多电平形式,但它可以帮助验证您的电路功能。