微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于保持时间不够

关于保持时间不够

时间:10-02 整理:3721RD 点击:
两级寄存器之间的传输时间过短,造成后级寄存器保持时间不够,应该怎么解决

这个算时钟抖动的问题吧?

在两个寄存器之间插delay cell

assign a1=~a0;
.......
assign an=~an-1;
偶数个才行哦,要不反了。

2# lock66
不算,就是两级寄存器之间的组合逻辑非常小

4# lock66
什么意思,是加buffer吗?

3# linuxluo
“在两个寄存器之间插delay cell”   不明白具体怎么做,麻烦三楼讲的详细点

quartusii 里面有关键词可以生成延时的单元!延时是比较久,以前我没用,而是用了组合逻辑来延时。
我这里上网不方便,你可以在网上搜索吧。

进行时钟约束或者调整设计结构。

1)重新考虑系统结构和时钟域划分,尽量减少不必要的时钟域交叠
2)优化时钟生成逻辑,减少latency
3)利用dc自动优化
4)PR中完成ECO
5)实在不行自己手动在代码里加几个buffer好了
大概就这几个了,现在就想到这么多~

插delay cell

这个在版图会做的,不用慌哈,
FPGA一般不会hold time不够的
如果有的话可以打开他的retiming选项,可以平衡寄存器之间的逻辑

為求精準一般hold time問題會在APR後來解決.

如果是ASIC合成的时候hold time为负,如果不大,APR都可以解决,所以还好。
实在不行,手动加buffer吧。

可以先set_fix_hold,还有不够的,就丢给后端去加buffer吧

每个clk之间要加buffer把,保证同步,应该就可以了吧

两级时钟不同?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top