首页 > 其他分享 >STA中的multi_cycle 和false_path详细讨论

STA中的multi_cycle 和false_path详细讨论

时间:2024-07-12 11:26:46浏览次数:25  
标签:multi set false STA get 路径 path 周期 时钟

前提概念:什么是数据路径?clk路径?require_time ? arrive_time?slack_time?不做赘述 1、为什么要对某些路径设置multi_cycles: 在某些情况下,两个触发器之间的数据路径可能需要一个以上的时钟周期才能传播通过逻辑。在这种情况下,这条组合逻辑路 径会被定义为多周期路径(multicycle path )。虽然数据还是会在每个时钟沿上都被捕获触发器捕获,但我们需要告知 STA 在指定数量的时钟周期之后才会出现 有效 的捕获时钟沿。 数据路径最多需要三个时钟周期,因此应指定三个周期的多周期建立时间检查,多周期建立时间约束: create_clock -name CLKM -period 10 [get_ports CLKM] set_multicycle_path 3 -setup -from [get_pins UFF0/Q] -to [get_pins UFF1/D] 多周期路径上的保持时间检查。在最常见的情况下,我们希望保持时间检查保持不变(与单周期路径一 致), 这样可使数据在三个时钟周期之内任意进行改变。只有指定多周期保持时间为3-1= 2 ,才可以获得与单周期建立时间检查情况相同的保持时间检查。这是因为在没有这样的多周期保持时间约束的情况下,默认的保持时间检查是在建立时间捕获沿的前一个有效时钟沿上执行的,这显然不是我们希望的。我们需要将执行保持时间检查的时钟沿移动到默认保持时间检查时钟沿之前的两个周期,因此指定了多周期保持时间为 2 。通过多周期保持时间约束,数据路径的最小延迟可以小于一个时钟周期: set_multicycle_path 2 -hold -from [get_pins UFF0/Q] -to [get_pins UFF1/D] 假如不设置多周期保持时间约束: 在捕获沿之前的一个时钟沿对保持时间进行了检查(默认状态),这导致了较大的保持时间违例。实际上,该保持时间检查将要求组合逻辑中的最小延迟至少为两个时钟周期。 2、为什么要设置false_path? 当设计的功能运行时,某些时序路径可能不真实(或不可能)存在或者功能对其时序不在乎,在执行 STA 时可以将这些路径设置为伪路径( false path),这样就可以关闭这些路径,那么 STA 就不会对这些伪路径去进行分析了。 伪路径可能是从一个时钟域到另一个时钟域、从触发器的时钟引脚到另一触发器的输入引脚、通过一个单元的引脚、通过多个单元的引脚或这些情况的组合 。当通过单元的引脚指定了伪路径后,通过该引脚的所有路径都将被忽略,无需进行时序分析。 辨别出伪路径的好处在于减少了分析空间,从而使分析可以专注于真实存在的路径,这同样有助于减少分析时间。但是,过多使用-through选项去指定伪路径同样会降低分析的速度。 set_false_path -from [get_clocks SCAN_CLK] -to [get_clocks CORE_CLK] set_false_path -through [get_pins UMUX0/S] set_false_path -through [get_pins SAD_CORE/RSTN] set_false_path -to [get_ports TEST_REG*] set_false_path -through UINV/Z -through UAND0/Z 要在两个时钟域之间设置伪路径,请使用: set_false_path -from [get_clocks clockA] -to [get_clocks clockB] 而不要使用: set_false_path -from [get_pins {regA_ * }/CK] -to [get_pins {regB_ * }/D] 后者这种方式要慢得多。 另一个建议是尽可能少使用 -through 选项,因为它增加了运行时不必要的复杂性。仅在绝对有必要且没有替代方法可以指定该伪路径的情况下,才可以使用-through 选项。 从优化的角度来看,还有一个建议是不要将一条多周期路径约束为伪路径。如果需要在已知或可预测的时刻对信号进行采样,则无论时间间隔多大,都应使用多周期路径约束,以使路径具有一定的约束条件并进行优化以满足多周期约束。如果把一条许多时钟周期后进行采样的路径指定为了伪路径,则对设计中其余逻辑路径的优化可能会使该路径变长,甚至超出所需的时间。 注意:建立时间检查和保持时间检查是针对同一工艺角( corner )。在最坏情况的慢速工艺角 下wc_corner,建立时间检查最难满足(裕量最小),而在最佳情况的快速工艺角下best_corner,保持时间检查最难满足(裕量最小)。一般pr后netlist,setup容易满足,即修干净,但是hold 不容易修的很干净,没有完全clean,所以在chip_TO前后,时间紧迫情况下,post_sim优先sim_bc_corner的sdf。 半周期:half_cycle 设计中同时具有负边沿触发的触发器和正边沿触发的触发器,则设计中可能存在半周期路径(half-cycle path )。半周期路径可能是从一个触发器的上升沿到另一个触发器的下降沿,或者反过来。 这样会导致setup_check加严,只有半个周期,hold_check放松,放宽了半个周期。 所以在设计中可以采用负电平有效(即hold值,锁存值)的latch_up_cell来向下一级寄存器借一部分时间,来改善hlod的vialition。 应用场景: 例如:1、在串chain的过程中,由于option设置,两条不同clk的 chain的末端会存在跨时钟域的问题,如果两个clk_skew很大或者很小,导致Tdata会比Tclk_skew小,导致hold_via发生,下一级寄存器会拿到当拍的值,而不是上一拍的值。所以可以采用latch_up_cell的锁存特性来修复。前提是clk2的延迟不能太大,不能超过clk1的高电平时间范围,就可以用latch-up_cell修复。 2、ip-chain的集成过程中,会存在一条chain上有正负延寄存器,此时也需要用它来修复。

特殊路径:跨时钟域下的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 )的。通常,在最坏情况的慢速工艺角下,建立时间检查最难满足(裕量最小),而在最佳情况的快速工艺角下,保持时间检查最难满足(裕量最小)。

标签:multi,set,false,STA,get,路径,path,周期,时钟
From: https://blog.csdn.net/jinkai0822/article/details/140369233

相关文章

  • [1030] Extract text between two specific phrases in a multi-line text
    Ah,theancientartoftextextraction—wherewedelveintothescrollsofPythonmagictorevealhiddenpassages!Fearnot,fellowseekerofknowledge;Ishallguideyouthroughthismysticalprocess.Toextracttextbetweentwospecificphrasesinamult......
  • VMware Workstation Pro 17 与 虚拟机 ——【安装操作】
    选项卡页面切换一、安装准备环境要求介质准备二、步骤安装VMwareWorkstationPro17创建虚拟机(Windowsserver2016)三、常见问题1.许可证问题一、安装准备环境要求内存:16.0GB(15.8GB可用)硬件版本:Windows11家庭中文版版本号:23H2小版本:22631.3......
  • AWS JDBC Driver连接中国区的Aurora需要配置参数 enableClusterAwareFailover=false
    AWSJDBCDriver中国区和Global区域的区别是,由于中国区AuroraEndpoint与Global的后缀不同,中国区的AWSJDBCDriver其实无法识别中国区endpoint,因为中国区的资源endpoint是以".cn"结尾,这个endpoint不被认为是aurora的endpoint,会被认为是customdomain.因此应用程序在使用AW......
  • ROS源码学习分享_TopicManager::start()
        在上一章节中,我们讲解了NodeHandle节点创建后的一些背后行为。其最重要的行为是启动了全部的管理节点。在本章中,我们将看一看TopicManager节点在启动之后发生了什么。(以下内容,属于个人观看源码后得出的理解,可能有错,仅用于自我复习,请批判的看待)    TopicM......
  • 开源模型应用落地-FastAPI-助力模型交互-进阶篇(一)
    一、前言  FastAPI的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理,使应用程序能够处理各种不同的请求场景,提高应用程序的灵活性和可扩展性。  在数据验证和转换方面,高级用法提供了更精细和准确的控制,确保输入数据的质量和安全性。它......
  • CN-Celeb 论文阅读:CN-Celeb: multi-genre speaker recognition
    摘要Inthiswork,wefirstlypublishCN-Celeb,alarge-scalemulti-genrecorpusthatincludesin-the-wildspeechutterancesof3,000speakersin11differentgenres.Secondly,usingthisdataset,weconductacomprehensivestudyonthemulti-genrephe......
  • 「AI绘画Stable Diffusion 零基础入门 」AI 绘画原理与工具介绍,万字解析AI绘画的使用
    大家好,我是程序员晓晓AI绘画原理想要入门AI绘画,首先需要了解它的原理是什么样的。其实很早就已经有人基于深度学习模型展开了对图像生成的研究了,但在那时,生成的图像分辨率和内容都非常抽象。直到近两年,AI产出的图像内容的质量变高、而且有一定的艺术价值,这时它才算......
  • StarRocks跨集群迁移最佳实践|得物技术
    一、引言2024年之前,DBA维护的StarRocks集群存在在用低版本多、稳定性受组件bug影响大的问题,给日常运维带来一定压力,版本升级迫在眉睫。于是,我们在今年年初安排了针对2.5以下版本升级2.5.13的专项。这里和大家分享下,针对因版本兼容问题而不能原地升级的场景下,进行跨集群升级......
  • [题解] [ABC221H] Count Multiset - DP
    [ABC221H]CountMultiset题面翻译输入两个正整数\(N,M\),并存在一个集合,问你一个长度为\(k\)的合法集合存在多少个?你需要回答\(k\)的值为\(1\)到\(N\)的每种情况。一个合法的集合定义指长度为\(k\),元素和为\(N\),每一个数字在集合中出现的次数都小于等于\(M\)的集......
  • 数据结构(Java):集合类LinkedList&集合类Stack
    1、集合类LinkedList1.1什么是LinkedListLinkedList的底层是一个双向链表的结构(故不支持随机访问):在LinkedList中,定义了first和last,分别指向链表的首节点和尾结点。每个节点中有一个成员用来存储数据,还有两个指针域next和prev分别存储下一个节点和上一个节点的地址。Link......