|
发表于 2004-9-20 22:28:26
|
显示全部楼层
什么是形式验证
FV只保证功能正确,timing的分析是靠STA,FV不能完成timing正确性的分析,他只证明了在timing正确的前提下,功能是正确的,所以STA必须照样进行。举例
Q[n+1] = F( Q[n], x[n] ),此算式表示Q得下一个状态由Q当前状态以及系统输入x决定(可以广义的认为Q,x均为向量,代表所有系统状态,和所有系统输入)。F为一个布尔函数,假定合成后次关系时就变成了另一种形式 Q[n+1] = G( Q[n], x[n] )。
FV只证明了F函数和G函数相等,但是在实际电路上G( Q[n], x[n] )的计算是需要时间的,这个时间必须小于一个系统时钟周期(再加上DFF的setup时间),而且这个时间必须大于DFF的hold时间。如果这个不满足了那么前面的差分方程就不成立了。
假定硬件计算G( Q[n], x[n] )要花一个系统时钟多一点(小于两个系而统时钟),
在DFF load新的值实际是:G( Q[n-1], x[n-1] ) {有可能是G( Q[n-1], x[n] ),因为不同路径delay不同,这样更糟糕} 所以在 RTL时关系式是: F( Q[n], x[n] )。
而实际电路为 G( Q[n-1], x[n-1] ), FV只证明了:
F( Q[n], x[n] ) = G( Q[n], x[n] )
而往往
F( Q[n], x[n] ) != G( Q[n-1], x[n-1] )
最后结论
Formal verification和static timing analysis 一个都不能少。 |
|