Chapter 11 Multi-Level Minimization
11.2 Boolean Networks
Boolean Networks正式的定义
看上去很复杂,但实际上boolean network通常是一个有向无环图,每个节点i对应一个bool函数和一个logic variable 。这样所有节点就形成了向量和。某些节点是bool网络的primary inputs,用vector 表示,实际上是一些logic variables的下标集合。某些节点是bool网络的primary outputs,用vector O表示,同样是一些logic variables的下标集合。是关联在输出节点上的logic functions,表示don't care项。
接下来是一堆bool网络相关的定义,很多,了解一下就行。后面应该结合具体例子理解这些概念。有一点需要注意,通常情况下是基于节点定义logic variables ,节点i对应了。但是有的情况下会基于边定义logic variable,比如节点i和j之间有边且j是i的successor,相应的logic variable为。假设节点i有k个fanouts ,如果在理想的bool网络,应该有。但是在实际电路中,线路可能会有故障,可能造成上述各个varialbe的值不相等。因此有的时候会根据边而非节点定义logic variables。
接下来说了一大堆don't care相关的概念。其实只要记住一点就行,一个非限定的bool 函数可以分为三个部分,分别用三个表达式表示,一个是onset,对应真值表中那些真值为1的行,一个是offset,对应真值表中那些真值为0的行,一个是dont care set,对应真值表中那些真值为“-”的行。
这个函数看上去很吓人,但是描述的事情很简单。对于一个节点j,如果是primary inputs,则该函数为。其实primary inputs也是有相应的的,不过是外部定义的,在本网络里通常用而不是表示输入节点。当节点j的fanins都是输入节点的时候,函数的值为。如果节点j为其他情形,则对节点j的fanin开始递归调用函数。这个函数本质上就是把输入值从primary inputs逐层传递到后继节点。换句话说,节点j的bool函数的support是节点j的fanins,不是bool网络的primiary inputs。函数就是通过一系列的自变量替换,将的support调整成网络的primary inputs。</