学习日志之synthesis and optimization(6)——逻辑优化

需要明确的一些概念

minterm: 立体卡诺图的顶点,表示的是在真值表中输出为1的点

implicant: 由minterm组成,一个implicant中可以蕴含多个minterm,按照合并同类项的原则进行合并

cover: implicant的合集

  1. minimum cover: 用最少的impliment表示的boolean函数(全局最优)
  2. irredundant cover: 这里虽然不是用implicant最少的cover但是其是有包括所有的minterm的,而且去掉其中任意一个都会造成有没有被包含进去的implicant(局部最优)
  3. irredundant cover with 1implicant:????(弱局部最优)

逻辑上的优化目的就是要寻找到minimum cover

 

优化算法

逻辑优化算法主要有两类:exact(这个得出的结果质量好,接近全局最小),approximate(这个效率高)。前者花在建立prime table上的资源很多,而后者不需要。这个优化问题由于最终需要找的是Min.covers,然而可能的cover会有很多种情况。为了效率我们可以引入一个Quine's theorem来对寻找的范围进行缩减。

Quine's theorem: Min.cover一定存在于PRIME cover中

prime cover: 这个是全部由prime implicant组成的cover

学习日志之synthesis and optimization(6)——逻辑优化

prime implicant: 不被其他implicant包含的implicant

关于这个prime implicant的理解如下所示:

学习日志之synthesis and optimization(6)——逻辑优化

问题描述:2-level optimization中就是要寻找一个X向量,使得其满足学习日志之synthesis and optimization(6)——逻辑优化,并且学习日志之synthesis and optimization(6)——逻辑优化是最小的(X中的元素加起来和最小)

这里X是一个列向量,其中的元素表示的是所有可能的Prime implicant是否包含在cover中如果包含,则值为1,若不包含,则值为0

学习日志之synthesis and optimization(6)——逻辑优化

A是一个就是一个记录Prime Implicant的矩阵,跟Prime Table一个意思

其行(row)表示minterm的个数

列(column)表示prime implicant的个数

当prime implicant j 包含了minterm i的时候这个(i,j)处的元素值就为1

学习日志之synthesis and optimization(6)——逻辑优化

在这里学习日志之synthesis and optimization(6)——逻辑优化的意义理解如下图所示

学习日志之synthesis and optimization(6)——逻辑优化

EXACT

1. Petrick method

2. Quine & Mc.Clisky

3. Espresso-exact(还有个在approximate中)