当前位置: 首页 > backend >正文

STA中的multi_cycle 和false_path详细讨论

特殊路径:跨时钟域下的exception_path:分为多种情况优先

1、不同clk_domain ,但频率相同

create_clock -name CLKM -period 10 -waveform {0 5} [get_ports CLKM]
create_clock -name CLKP -period 10 -waveform {0 5} [get_ports CLKP]
set_multicycle_path 2 -from [get_pins UFF0/CK] -to [get_pins UFF3/D]
默认为 -setup 选项。以上约束指定多周期建立时间为 2 且多周期保持时间为 0(默认值),会有hold的违例,若要消除,则设置hold的multi_cycle:
set_multicycle_path 2 -from [get_pins UFF0/CK] -to [get_pins UFF3/D] -setup
set_multicycle_path 1 -from [get_pins UFF0/CK] -to [get_pins UFF3/D] -hold
2.从slow_clk 到fast_clk:

create_clock -name CLKM -period 20 -waveform {0 10} [get_ports CLKM]
create_clock -name CLKP -period 5 -waveform {0 2.5} [get_ports CLKP]
当数据发起触发器和捕获触发器的时钟频率不同时, STA 会首先确定一个公共基本周期( common base period)。
假设该设计的目的不是在 CLKP 的下一个有效沿上就捕获数据,而是在每第4 个捕获沿上捕获数据。该假设给触发器之间的组合逻辑路径提供了 4 个 CLKP 周期的时间,即 20ns 。
我们可以通过设置以下多周期路径约束来做到这一点:

set_multicycle_path 4 -setup -from [get_clocks CLKM] -to [get_clocks CLKP] -end
在大多数设计中,这不是理想的时序检查,应将保持时间检查一直移回到数据发起沿所在位置。因此,我们可以约束多周期保持时间为3 。
set_multicycle_path 3 -hold -from [get_clocks CLKM] -to [get_clocks CLKP] -end
-end 选项意味着我们想将终点(或捕获边沿)移回指定的周期数,即捕获时钟的周期
数。代替 -end 的另一种选项 -start 指定了要移动的发起时钟周期数, -end 选项指定了要移动的捕获时钟周期数。 -end 是多周期建立时间约束的默认值,-start 是多周期保持时间约束的默认值。
所以对于慢速到快速时钟域之间 的路径,多周期路径约束的一个好经验是使用-end 选项。使用此选项,可以根 据快速时钟的时钟周期 来调整建立时间(往前走)和保持时间检检查(往后走)。
2、fast_clk到slow_clk:
create_clock -name CLKM -period 20 -waveform {0 10} [get_ports CLKM]
create_clock -name CLKP -period 5 -waveform {0 2.5} [get_ports CLKP]

setup_4是最严格的检查,通常,设计人员可以将从快时钟域到慢时钟域的数据路径指定为多周期路径。如果想要放宽建立时间检查,比如为数据路径提供两个快时钟周期,则此多周期路径约束如下:
set_multicycle_path 2 -setup -from [get_clocks CLKP] -to [get_clocks CLKM] -start
set_multicycle_path 1 -hold -from [get_clocks CLKP] -to [get_clocks CLKM] -start
约束多周期建立时间为2 会将发起沿移动到默认发起沿之前的一个时钟沿,即在 10ns 而不是
默认的 15ns 处。多周期保持时间约束确保了在 0ns 处发起沿发起的数据,不会被 0ns 处的捕获沿捕获到。
与从慢速时钟域到快速时钟域的路径不同,在从快速时钟域到慢速时钟域的路径中,多周期路径约束的一个好经验是使用 -start选项,然后再根据快速时钟调整建立时间和保持时间检查。
注意:建立时间检查和保持时间检查的示例报告是针对同一工艺角( corner )的。通常,在最坏情况的慢速工艺角下,建立时间检查最难满足(裕量最小),而在最佳情况的快速工艺角下,保持时间检查最难满足(裕量最小)。

                        -start:表示强制移动的为start clock即launch clock;

                        -end: 表示强制移动的为end clock即capture clock。

                        ps:当start clock和end clock同频时,不用指定start/end,因为移动哪一个都一样效果。

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/jinkai0822/article/details/140369233

http://www.xdnf.cn/news/4054.html

相关文章:

  • macOS 上是否有类似 WinRAR 的压缩软件?
  • Qt6.8中进行PDF文件读取和编辑
  • LeetCode:返回倒数第k个结点
  • MyBatis 一对多与多对一映射详解教程
  • macbook install chromedriver
  • 百度golang开发一面
  • SpringBoot集成CXF框架,实现WebService
  • 2025系统架构师---论面向对象的软件设计
  • Python字符串全面指南:从基础到高级操作
  • 计算机视觉与深度学习 | 点云配准算法综述(1992-2025)
  • Python核心技巧 类与实例:面向对象编程的基石
  • 协程补充---viewModelScope 相关知识点
  • 【计算机视觉】3d人脸重建:3DDFA_V2:实时高精度3D人脸重建与密集对齐技术指南
  • 【NLP】 26. 语言模型原理与概率建模方法详解(Language Models)
  • QT聊天项目DAY08
  • C 语言逻辑运算符:组合判断,构建更复杂的条件
  • Cisco Packet Tracer 选项卡的使用
  • Python中的客户端和服务端交互的基本内容
  • vue实现AI问答Markdown打字机效果
  • 【C/C++】函数模板
  • Auto.js 脚本:清理手机数据但保留账号
  • 第R8周:RNN实现阿尔兹海默病诊断(pytorch)
  • 基于EFISH-SCB-RK3576工控机/SAIL-RK3576核心板的网络安全防火墙技术方案‌(国产化替代J1900的全栈技术解析)
  • Python生活手册-正则表达式:从快递单到咖啡订单的文本魔法
  • Level DB --- MergingIterator
  • Compose 中使用 WebView
  • 基于YOLOv的目标检测训练数据构建方法研究—图像采集、标注、划分与增强一体化流程设计
  • Softmax回归与单层感知机对比
  • 【platform push 提示 Invalid source ref: HEAD】
  • 双目视觉的核心目标