Chapter 10 Multi-Level Logic Synthesis
10.1 Introduction
一个SOP F = xz + yz的电路如下图所示是两级的。
而multi-level是从左边输入到右边输出存在多级的路径,如下图。好处是通常面积较小,功耗低。实际应用中大型的design几乎都是multi-level的。
10.1.1 Networks and Algebraic Operations
最常见的multilevel logic模型是bool网络,本质上是一个有向图,每个节点是一个bool表达式。
节点z1和z2是bool网络的primary outputs(Po),节点x1,x2,x3,x4,x5,x6是bool网络的primary inputs(PI)。内部各个节点的bool表达式为
这里我们并没有对节点表达式的形式做任何限定,是最通用的模型。在具体的建模中,我们可以限定节点表达式形式为与门,或门,BDD,AIG,SOP,......。
下面是两个multi-level circuit,可以视为一个bool网络。
左右的bool表达式分别为
从左图到右图实际上是一种结构上的restructuring,对应到表达式就是把公因子c提取出来。当让,factorization的方法不知一种,比如 f 还可以factor成
通常情况下,我们会对factoring的类型进行限制。在本章中,我们对bool表达式的factoring操作都限定为algebraic。Algebraic的定义并不是特别严密,主要是区别于Boolean,意思是我们所作的运算局限于实数多项式领域。可以这样理解
我们一定要记住上述区别,否则无法理解本章余下的内容。不严格地说,我们是对bool表达式进行多项式因式分解。 显然,f = c(a+b) + ad就符合这个约定,而 f = (a+bc)(c+d) = ac + ad + bc.c + ad = ac+2ad+bc.c就不符合这个约定,因为我们无法利用多项式领域的运算将 f = (a+bc)(c+d)转换回 f = ac + bc + ad。
在multilevel logic的领域,我们还必须要有一个观念上的改变。对于 f = ac + bc + ad,我们之前的理解为三个cube ac,bc,ad的和。在本章中,我们将 f 视为三个cube 的集合 {ac,bc,ad}。同时我们将cube ac 视为2个literals的集合{a,c},cube bc 视为......
10.2 Representation Issues and Choices
10.2.1 Alternate Node Representations
boolean网络中每个节点的表达形式可以有很多种。
1 SOP---sum of products
2 Factored forms
本章最重要的表示方式,直观上看,是用括号嵌套的表达式
Factored form有一个很好的特性-------取反之后literals的数目不变,如
左右的literals数目都是5。所以,我们认为一个factored form同时表示F和F‘(inverter的代价可忽略不计)。
3 NAND or NOR Representations-------限定节点function为NAND或NOR
10.3 Representing Switching Functions in Factored Form
10.3.1 Factored Forms
一个product可以视为terms为1的sum,factored form可以理解为sum of product的扩展,只不过product被递归定义为factored forms的乘积。并且一个single literal也是一个factored form。比如下面这些表达式都是factored form:
但是下面这个就不是,因为一个括号是一个factored form,但是定义中没有说可以对factored form取反,是不是?注意本身是一个literal,不是对literal a的取反。
10.3.2 Algebraic and Boolean Expressions
a+bc是algebraic expression的,但是a+ab不是algebraic的。Why?假设我们对a+ab提取公因子会得到a(1+b)。如果按照bool操作,1+b = 1,但是按照代数操作,没有这种优化。所以应该这样理解,如果一个表达式的优化涉及bool操作,则这个表达式就不是代数的。
可见support是忽略取反的。
10.3.3 Algebraic and Boolean Factored Forms
一条简单的判别规则,我们把factored form按照代数操作展开,如果结果是代数表达式,则factored form是代数的,否则为bool的。
10.3.4 Value of a Factorization
其实factorization value就是原始sop的literals数目减去factored form的literals数目,换句话说,就是factoring节省的literals数目。比如
如果选取G1 = a + bc + bd,G2 = e + f + g,则R=0,F = (a + bc + bd) (e + f + g)。从而FACT_VAL(F,G2) = 24 - (5 + 3) = 16。书中用了一种别扭的计算方式FACT_VAL(F,G2) = 2 * 3 + 2 * 5 = 16。我们解释以下2*5是怎么来的,2*3与之类似。我们观察(a + bc + bd)的literals数目为5,在factored form,a+bc+bd只计算了一次,而如果展开成的话,会被计算三次------(a+bc+bd)*e + (a+bc+bd)*f + (a+bc+bd)*g,所以相当于减少了5*(3-1) = 2*5个literals。
10.3.5 Equivalent, Maximal, and Optimum Factorizations
Forctored form可以表示为一棵factoring tree,如下图
看两个例子
这两个都不是maximally factored的。这两者一个为sum of products,一个为products of sums,都含有一个公因子a,所以都可以提取公因子:
需要注意的是后一个提取公因子用到了“+” distributes over “.“,这个是bool操作非代数操作。今后如果我们的factoring操作限定在代数领域,则不会考虑后面一个提取公因子操作,因为这种情况根本不会出现。比如代数领域可能出现(a+b)(c+d),但是绝不会出现(a+b)(a+c)。所以我们在判断是否为maximally factored的时候,不需要考虑product of sums的terms之间是否存在公因子,即不用考虑Definition 10.3.6的第二种情况。
这个很显然。比如我们要判断F = (ab + ac + cd)(e+f) + gh是否为maximally factored,递归步骤(实际为倒序,因为是postorder)为
1 判断sum terms (ab+ac+cd)(e+f) 和 gh之间是否有公因子
2 无需判断product