问题描述
如果我在FIFO生成器核心的时序分析中检查无约束路径报告,则在FIFO内的某些无约束路径上会发生独立时钟类型,建立或保持违规。
例如:
保持违规:-4.085ns(要求 – (时钟路径偏斜+不确定性 – 数据路径))
目的地:sample_fifo / BU2 / U0 / gen_as.fgas / normgen.flblk / clkmod / cx.wrx / pntr_gc_x_0(FF)
此外,在基于分布式存储器的FIFO核心中,报告类似于以下路径:
来源:sample_fifo / BU2 / U0 / gen_as.fgas / normgen.memblk / mem0.distinst / inst_Mram_mem5 / DP(RAM)
要求:0.000ns
“ FIFO生成器核心用户指南”指出对写入时钟和读取时钟的PERIOD约束足以满足内核的要求。这些不受约束的路径是否值得关注?
解决/修复方法
由于独立时钟模式下FIFO生成器内核的性质,内核必须在不同的时钟域之间传递信息(例如,wrclk到rdclk)。此处列出的特定路径涉及传递有关FIFO内读写指针的信息。由于用于在FIFO核心内构造该逻辑的方法,预期这些路径上的时序违规。
要解决此问题(对于基于块内存的FIFO):
- 在“无约束路径”报告中可以忽略对这些类型路径的计时违规。
- 如果要保持这些路径不被分析,可以在UCF中定义Timing Ignore(“TIG”)约束。例如:
NET“* BU2 / U0 / as.fgas / normgen.flblk / clkmod / cx.wrx / pntr_gc_x(*)”TIG;
- 另一种选择是在UCF中应用MAXDELAY约束。虽然这些路径不需要实际的时序约束,但如果需要,可以这样做。理想的时序约束是将MAXDELAY约束设置为连接到FIFO的最慢时钟周期的两倍。例如(如果最慢的时钟周期为10ns):
NET“* BU2 / U0 / as.fgas / normgen.flblk / clkmod / cx.wrx / pntr_gc_x(*)”MAXDELAY = 20 ns;
要解决此问题(对于基于分布式内存的FIFO):
- 除了上面针对其他路径的选项之外,推荐的选项(除了忽略报告中的路径)是在从RAM的DP输出到由RD_CLK计时的输出寄存器的路径上应用一个时钟周期的MAXDELAY。
没有回复内容