vivado的时序约束失败问题总结

在vivado综合布线后,会有时序报告,时序约束问题有两种:

1.跨时钟

详细见 https://blog.csdn.net/wordwarwordwar/article/details/77434520

这种情况占大部分时序约束问题,信号传输的两端时钟不同,可以是频率和相位不同。主要讲频率不同的情况,又可以分为两种:

(1)由快时钟到慢时钟

快到慢会出现,慢时钟还没来得及得到快时钟的某个数据时,快时钟下信号值已经变化了,这种情况可以设置快时钟下信号在慢时钟得到后再进行变化的设计,由慢时钟信号作为一个控制信号源给快时钟信号。

(2)由慢时钟到快时钟

慢时钟到快时钟,会导致数据不稳定时就由快时钟读取了,出现亚稳态,可以采用“打两拍”来解决,就是写一个快时钟下的延迟信号,阶梯式接受到最终的快时钟下

对于两种情况还可以用RAM或FIFO等存储器把快慢时钟的信号进行存储再读取,进行解决。

2.同时钟

同时钟和一个时钟下进行的工作复杂度决定的,通过查看时钟约束报告,确定是从哪端到哪端,再决定简化办法。

我遇到了提示RAM0和RAM1之间的一些信号传输问题,单从时序报告引脚显示是RAM封装里面的信号,在没有确定是写入数据还是读出数据有问题时,可以看导致两个RAM有直接联系的信号,该信号在一个时钟周期内进行了运算和交换,于是搞清楚了时RAM0的读出信号在一个周期内读出运算并写入RAM1,于是在这条路径上,用寄存器reg写一个时序逻辑,把一个周期内的运算量分开进行,从而解决了问题。

 

posted @ 2023-02-09 20:40  孑尛燚茻  阅读(768)  评论(0)    收藏  举报