时序例外

阅读: 评论:0

时序例外

时序例外

今天拿到一个别人的工程,布局布线后发现有16个Critical Warning,在生成bit文件时,vivado卡死在布线步骤,说明时序是有问题的。打开综合后的时序报告,发现保持时间Slack为-18ns,而且都是保持时间违例,建立时间没有问题。通过对具体的违例线路分析,发现大部分都是异步fifo读写数据路径违例(如下图所示),最终通过set_false_path解决了问题。所以对false path进行了初步研究。

时序问题都是保持时间违例
有时序问题的Path

1、什么是false path

该路径没有逻辑功能(只是数据总线);该路径不需要时序约束;该路径在时序分析的时候可以忽略不分析。

2、那些路劲可能是false path

跨时钟域信号通过寄存器打两拍保持异步信号同步的路径;

一上电只写一次的寄存器路径;

复位或测试逻辑;

异步读写双端口RAM;

3、添加false path的理由

减小布线时间:设置false path后,工具就不会在该路径进行时序检查和优化,就会将主要精力放在关键路径布局布线;

提高QOR(quality of result):提高综合、布局布线和实现的质量。

4、添加false path的命令

set_false_path [-setup] [-hold] [-from <node_list>] [-to <node_list>] [-through <node_list>]

下面介绍了命令的几种特殊用法:

1.移除全局复位信号到所有寄存器的false path

      set_false_path -from [get_port reset] -to [all_registers]

2.移除两个异步时钟域之间的的false path

     set_false_path -from [get_clocks CLKA] -to [get_clocks CLKB]

     set_false_path -from [get_clocks CLKB] -to [get_clocks CLKA](两者定义的路径方向不同)

3.两个或者多个异步时钟域,彼此之间各个方向的false path(比2定义的范围更广)

     set_clock_groups -group CLKA -group CLKB

4.双端口RAM读写异步操作的false path

     1)定义RAM之前写寄存器到RAM后读寄存器的false path

           set_false_path -from [get_cells <write_registers>] -to [get_cells <read_registers>]

     2)从RAM写信号(WE)定义false path

           set_false_path -from [get_cells -hier -filter {REF_NAME =~ RAM* && IS_SEQUENTIAL &&
                   NAME =~ *char_fifo*}]


 


 

本文发布于:2024-01-28 05:15:00,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063901045048.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时序
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23