在vivado综合布线后,会有时序报告,时序约束问题有两种:
1.跨时钟
详细见 https://blog.csdn.net/wordwarwordwar/article/details/77434520
这种情况占大部分时序约束问题,信号传输的两端时钟不同,可以是频率和相位不同。主要讲频率不同的情况,又可以分为两种:
(1)由快时钟到慢时钟
快到慢会出现,慢时钟还没来得及得到快时钟的某个数据时,快时钟下信号值已经变化了,这种情况可以设置快时钟下信号在慢时钟得到后再进行变化的设计,由慢时钟信号作为一个控制信号源给快时钟信号。
(2)由慢时钟到快时钟
慢时钟到快时钟,会导致数据不稳定时就由快时钟读取了,出现亚稳态,可以采用“打两拍”来解决,就是写一个快时钟下的延迟信号,阶梯式接受到最终的快时钟下
对于两种情况还可以用RAM或FIFO等存储器把快慢时钟的信号进行存储再读取,进行解决。
2.同时钟
同时钟和一个时钟下进行的工作复杂度决定的,通过查看时钟约束报告,确定是从哪端到哪端,再决定简化办法。
我遇到了提示RAM0和RAM1之间的一些信号传输问题,单从时序报告引脚显示是RAM封装里面的信号,在没有确定是写入数据还是读出数据有问题时,可以看导致两个RAM有直接联系的信号,该信号在一个时钟周期内进行了运算和交换,于是搞清楚了时RAM0的读出信号在一个周期内读出运算并写入RAM1,于是在这条路径上,用寄存器reg写一个时序逻辑,把一个周期内的运算量分开进行,从而解决了问题。
标签:总结,RAM,时序,vivado,信号,约束,时钟 From: https://www.cnblogs.com/suncan1998/p/17106989.html