某项目时序分析结果如下,显示Net Delay为10.728ns,导致时钟slack值为负。其中所有的时钟信号在图2中所示。根据违例的路径进行分析,这条路径实际上没有逻辑延迟,但是有一个巨大的网络延迟。可能是由以下几点引起的:信号传输中可能有太大的扇出,导致一些信号距离驱动源端太远;布线位置不合理-目标位置距离源位置太远;由保持时间违规造成。
如果在信号传递中存在跨时钟域路径,而这些路径又未经跨时钟处理(FIFO/RAM)等,时序分析工具将这些路径视为正常路径进行处理,这些信号往往具有很大的时钟偏移,从而导致保持时间无法满足,为了修复保持时间slack,工具将增加大量的额外路径,从而又导致其他路径的建立时间违规。应该根据具体失败的路径进行分析和解决。从图3中可以看出,Requirement时间太小,是跨时钟域信号的特性,应该首先解决跨时钟域问题。
解决办法为:添加timing exception约束,设置如下:
set_multicycle_path 3 -from [get_cell int10_reg] -to [get_cell int20_reg]
id=“ab439753”>set_multicycle_path 4 -to [get_cell int20_reg]
set_false_path -from [get_ports in6] -to [get_cell int20_reg]
set_false_path -to [get_ports out5]
set_false_path -to [get_cell int21_reg]
set_false_path -from [get_ports in6] -to [get_ports out6]
set_max_delay 5 -to [get_ports out6]
set_min_delay 3 -from [get_cells int10_reg] -to [get_cell int20_reg]
【研究FPGA/IC设计、开发、验证等技术,请关注公众号:阳光里安静地读书】