我们来了解一下在数字设计,特别是设计自动化领域中非常重要的Unate cell(单调单元)。
数字电路设计实际上大部分工作都是将输入代码转化为输出代码的Code2Code操作。关键在于如何让计算机理解我们想要的结果。
什么是Unate Cell?
Unate cell是一种简单表达**“输入值变化对输出值逻辑特性的影响”**的方法。
在进行逻辑综合(Logic Synthesis)、可测试性设计(Design For Testability)、自动测试向量生成(Automatic Test Pattern Generation)等EDA工具开发时,Unate cell非常有用。这在STA、DFT、DV等许多领域中都有广泛应用。
首先,我们需要了解Edge的概念。
如下面的图所示,0->1
称为上升沿(rising edge),1->0
称为下降沿(falling edge)。
Unate cell 主要分为以下三种类型:
- Positive Unate cell(正单调单元): 输入Edge和输出Edge相同,或者没有变化。
- Negative Unate cell(负单调单元): 输入Edge和输出Edge相反,或者没有变化。
- Non Unate cell(非单调单元): 输入Edge和输出Edge有时相同,有时相反,因此不具有Unate特性。
以Positive Unate为例,
例如,对于**2-input AND Gate(与门)**来说,
(1) 当 A 和 B 都为 0
时,输出为 0
。
(2) 当 A 从 0
变为 1
时,输出仍然保持 0
。
(3) 当 A 为 1
,且 B 从 0
变为 1
时,输出从 0
变为 1
,与输入Edge的变化相同。
(4) 在 A 为 1
的状态下,若 B 从 1
变为 0
,则输出同样从 1
变为 0
,与输入的变化一致。
(5) 当 B 为 0
时,即使 A 从 1
变为 0
,输出仍然保持 0
。
Buffer、AND 和 OR 门都是正单调单元(Positive Unate cell)。
负单调单元(Negative Unate cell) 是指输出Edge与输入Edge相反或保持不变的逻辑特性。
反相器(Inverter) 是典型的负单调单元(Negative Unate cell),输出的Edge与输入相反。
以 NAND Gate(与非门) 为例进行简单说明,
(1) 假设 A 和 B 都为 1
,此时输出为 0
。
(2) 在 B 为 1
的状态下,将 A 从 1
变为 0
,输出则从 0
变为 1
,输出Edge与输入Edge相反。
(3) 当 A 为 0
时,即使将 B 从 1
变为 0
,输出仍然保持为 0
。
INVERTER、NAND 和 NOR 门是典型的负单调单元(Negative Unate cell)。
另一方面,XOR Gate(异或门) 是典型的非单调单元(Non Unate cell)
简单来看,也是如此,对吧?
- 当 A=0,B=0 时,输出为
0
。 - 当 A=0,B 从
0
变为1
时,输出从0
变为1
。
- 当 A=1,B=0 时,输出为
1
。 - 当 A=1,B 从
0
变为1
时,输出从1
变为0
。
这是一个不具备单一特性的Cell。