|
天哪!这些回答,不好意思,都错了。
LZ提到了ISE和synplify,我假定这里的比较器是一个数字电路。
首先,如果是ASIC,我们一般用standard cell来搭建电路,综合软件会是DC或者RTL Compiler。
综合工具只有读进standard cell的库文件,才能获得时间。所以,每一个standard cell的延时信息在库文件中可以得到。
但是,问题远远比这复杂。
每一个standard cell的时间并不是固定的,着要根据standard cell的输入电压的变化率和输出所带负载决定。输入电压变化越快,输出负载越小门延时越小。
所以。库里面给的往往是一个表,通过输入电压变化率和输出负载来判断时间。
另外,库也分多种,最好,标准与最差,我们称为corner conditions
标准一般为25度标准电压下的值,最差为90-100度低电压下的值,最好为0度高电压下的值。这里是温度和VDD
在来说比较器。比较器恐怕不是standard cell吧,应该是一个module(verilog),一个子电路。这时候,我们不光考虑门延时,还要考虑线延时。
综合软件的线延时不是真实的,它是通过wire load model估计出来的。当然现在的综合软件可以通过预作floorplan得到更准确的线延时,但这个和你的问题无关。
重要的是,综合并不知道两个standard cell之间的距离和位置,无法得到线长度。
所以,比较准确的子电路延时必须是布局布线之后的。然而,布局布线的好坏直接距影响了先延时的大小,所以确实需要编写合适的约束脚本来完成布局布线。
尽管如此,post-layout获得的时间也不是真实的。他一般是从corner condition计算来的。在计算延时时,软件往往用maximal timing来计算,所以一个组合逻辑模块的延时在报告中往往是最差时间。
更准确的时间可以通过抽取电容电阻导出spice网表,然后做spice分析。甚至流片测量。不过一般不可能。
回到FPGA。FPGA的过程和ASIC基本一致,但是简陋的多,所以有很多限制导致最后你只能得到一个估计的时间。
首先,综合里的报告是不准的,原因是线延时是估计的,所以synplify 拿到的时间一般接近于真实值。
布局布线后的时间要准很多,这是的线延时是通过准确的线长度计算得出的。但是是corn value
FPGA无法导出SPICE和抽取电容电阻,所以SPICE分析是不可能的。
用硬检测也是不可能的。FPGA的线延时较大,硬件测量不会准。
最准的时间只能是布局布线报告里的时间。
最后说一句,基于以上的种种麻烦,同步数字电路我们往往只讨论一个电路最高工作平率和需要几个时钟周期完成,而不讨论实际延时。对于组合逻辑电路的确切延时,大多数情况下是没有意义的。 |
|