时序例外_Timing Exceptions_False Paths(set_false_path)

2024-01-21 21:50

本文主要是介绍时序例外_Timing Exceptions_False Paths(set_false_path),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天拿到一个别人的工程,布局布线后发现有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*}]


 


 

这篇关于时序例外_Timing Exceptions_False Paths(set_false_path)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/630930

相关文章

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

shell中set -u、set -x、set -e的使用

《shell中set-u、set-x、set-e的使用》本文主要介绍了shell中set-u、set-x、set-e的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录✅ 1. set -u:防止使用未定义变量 作用: 示例:❌ 报错示例输出:✅ 推荐使用场景:✅ 2. se

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

python中os.stat().st_size、os.path.getsize()获取文件大小

《python中os.stat().st_size、os.path.getsize()获取文件大小》本文介绍了使用os.stat()和os.path.getsize()函数获取文件大小,文中通过示例代... 目录一、os.stat().st_size二、os.path.getsize()三、函数封装一、os