学习日志之synthesis and optimization(6)——逻辑优化
需要明确的一些概念
minterm: 立体卡诺图的顶点,表示的是在真值表中输出为1的点
implicant: 由minterm组成,一个implicant中可以蕴含多个minterm,按照合并同类项的原则进行合并
cover: implicant的合集
- minimum cover: 用最少的impliment表示的boolean函数(全局最优)
- irredundant cover: 这里虽然不是用implicant最少的cover但是其是有包括所有的minterm的,而且去掉其中任意一个都会造成有没有被包含进去的implicant(局部最优)
- 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
prime implicant: 不被其他implicant包含的implicant
关于这个prime implicant的理解如下所示:
问题描述:2-level optimization中就是要寻找一个X向量,使得其满足,并且
是最小的(X中的元素加起来和最小)
这里X是一个列向量,其中的元素表示的是所有可能的Prime implicant是否包含在cover中如果包含,则值为1,若不包含,则值为0
A是一个就是一个记录Prime Implicant的矩阵,跟Prime Table一个意思
其行(row)表示minterm的个数
列(column)表示prime implicant的个数
当prime implicant j 包含了minterm i的时候这个(i,j)处的元素值就为1
在这里的意义理解如下图所示
EXACT
1. Petrick method
2. Quine & Mc.Clisky
3. Espresso-exact(还有个在approximate中)