Timing issues
Timing modeling
通过布尔或者代数转换后达到最小化,需要去处理电路延时。
引入几个概念:
- 传播时间 di
- 数据准备 到达时间 ti
- 数据所需时间 ti’
- slack si
举例一个逻辑网络:
先知道传播时间:
数据准备到达时间:
数据所需时间:
计算slack:
所有slack为0的节点组成拓扑关键路径(topological critical path)
假路径检测
静态时间分析(static timing)
知道了到达时间和所需时间,然后考虑slack。我们可以根据slack定义关键拓扑路径,但是不一定是真。也就是说,路径不一定会传播事件,并引入sensitization概念。
比如下面的网络:
因为不能传播事件,所以这是个假关键路径
布尔:慢但最佳
结构:更快但是不够理想
动态灵敏度
更精确
静态灵敏度
很虚弱
启发式方法:technology mapping
将问题分为三个阶段:
- Decomposition
- Partitioning
- Covering
第一步:先使用标准库
第二步:根据INV和NAND2来组成其他门逻辑像AND2,OR2,NOR2,AOI21等。
第三步:一共有两种cover:
一个是寻找最小面积:
一个是寻找最小延时:
Power Modeling
Switching activity
例如给一个逻辑门NOR:假设输入逻辑1的几率为0.5,逻辑0的几率为0.5.输出逻辑为1的概率为0.25,输出逻辑为0的概率为0.75.
Esw = P(O = 0)P(O = 1) + P(O = 1)P(O = 0) = 3/8
例如一个布尔函数 f = abcd,所有输入都一样几率。
电路1:
对于节点O1:
p(O = 1) = 1/4 p(O = 0) = 3/4
Esw = 2 · p(O = 1) · p(O = 0) = 3/8
对于节点O2:
p(O2 = 1) = p(O1 = 1) · p(c = 1) = 1/41/2=1/8
p(O2 = 0) = 1 − p(O2 = 1) = 7/8
Esw = 2p(O2 = 0)p(O2 = 1) = 21/87/8=7/32
对于节点O3:
p(O3 = 1) = p(O2 = 1) · p(d = 1) = 1/812=1/16
p(O3 = 0) = 1 − p(O3 = 1) = 1 −1/16=15/16
Esw = 2p(O3 = 1) · p(O3 = 0) = 21/16*15/16=15/128
电路2:
每一个AND门输出O1和O2有相同的switching activity:
Esw =3/8
最后O3:
p(O3 = 1) = p(O1 = 1)p(O2 = 1) = 1/41/4=1/16
p(O3 = 0) = 1 − p(O3 = 1) = 1 −1/116=15/16
Esw = 2p(O3 = 1) · p(O3 = 0) = 21/16*15/16=15/128
对比总结: