静态时序分析:ideal_clock、propagated_clock以及generated_clock的关系及其延迟计算规则(一)

相关阅读

静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm=1001.2014.3001.5482


        理想时钟(ideal_clock)、传播时钟(propagated_clock)是两种相对的时钟,理想时钟用于时钟树综合(CTS)前,而传播时钟用于时钟树综合后。生成时钟(generated_clock)用于定义一个由另一个时钟(被称为主时钟(master_clock))派生出的时钟,例如一个分频时钟,这么做的目的是因为DC无法自动由触发器时钟端的时钟推断出其输出端的分频时钟,本文旨在理清这三者之间关系。

理想时钟

        create_clock命令创建的时钟是就是理想时钟,关于该命令的使用,可以参考之前的文章SDC命令详解:使用create_clock命令进行约束

        下面用一个简单的例子说明这一点,图1是两个D触发器的简单级联。

图1 一个简单的例子

        下面使用create_clock命令,在clk端口创建了一个理想时钟,周期为10。

create_clock -period 10 [get_ports clk]

        对于理想时钟而言,它的延迟包括两部分:源延迟(source)和网络延迟(network delay),它们都是使用set_clock_latency命令进行设置的,关于该命令的使用,可以参考之前的文章SDC命令详解:使用set_clock_latency命令进行约束。注意:理想时钟的网络延迟值是直接设置的,而不会从时钟路径上的线延迟(net delay)和单元延迟(cell delay)中推断出来。

        下面的命令设置了时钟clk的源延迟为2ns,网络延迟为0.5ns。

set_clock_latency -source 2 [get_clocks clk]
set_clock_latency 0.5 [get_clocks clk]

        图2所示的建立时间时序报告显示,时钟的总延迟为2.5ns(注意这里的network delay其实指的是总延迟,而不只是网络延迟),括号中的ideal提示了这是一个理想时钟。

图2 建立时间时序报告

        那么,是不是说时钟路径上的任何单元都无法影响理想时钟呢?其实不然,它可以影响理想时钟的时钟极性,即如果存在一个反相器,则时钟上下沿会反相,如图3所示的电路图。

图3 时钟路径上有反向器的例子

        图4为此时的建立时间时序报告,注意其中上升沿的时间已经不是0ns和10ns,而是5ns和15ns。

图4 建立时间时序报告

        顺带一提,理想时钟的转换时间,是由set_clock_transition命令直接指定的,关于该命令的使用,可以参考之前的文章SDC命令详解:使用set_clock_transition命令进行约束

传播时钟

        传播时钟是在进行了时钟树综合后,使用set_propagated_clock命令将一个理想时钟转换为传播时钟(注意,虚拟时钟即无时钟源对象的时钟无法被转换为传播时钟),此时的时钟延迟由源延迟和真实网络延迟组成,这里的网络延迟是根据时钟路径上的线延迟和单元延迟真实计算出来的。

        例如对于图3所示的例子,使用set_propagated_clock命令将理想时钟clk转换成传播时钟,此时会给出如下警告,因为这个理想时钟之前设置了网络延迟值,将其转换成传播时钟会导致网络延迟值被删除(对于转换时间也是如此)。

set_propagated_clock [get_clocks clk]
Warning: Converting ideal clock at 'clk' to propagated clock.  (UID-477)

        图5是此时的时钟报告,可以看出此时的时钟clk已经拥有p属性了,即是一个传播时钟了。

图5 时钟报告

        图6是此时的建立时间时序报告,时钟的总延迟为2.01ns(注意这里的network delay其实指的是总延迟,而不只是网络延迟),其中的0.01ns就是时钟路径上的线延迟和单元延迟之和,括号中的propagated提示了这是一个传播时钟。

图6 建立时间时序报告

        可以选择添加-path full_clock选项,这样的时序报告会展开一个传播时钟的时钟路径,而不是只显示为一个总的延迟值,如图7所示。

图7 展开时序路径的建立时间报告

        注意:在这个例子中,线延迟为0,因为使用了理想线负载模型,所以只显示了单元延迟0.01ns。

        以上内容,对理想时钟和传播时钟的延迟计算进行了讨论,关于它们两者和生成时钟的关系,留到下一章进行讨论。

下一章

静态时序分析:ideal_clock、propagated_clock以及generated_clock的关系及其延迟计算规则(二)https://chenzhang.blog.csdn.net/article/details/140070290

<think>好的,用户问的是关于ICC-TCL中“set_propagated_clock [all_clocks]”这个命令。我需要先回忆下这个命令的具体用途和适用场景。 首先,ICC(Intellegent Clock Tree Synthesis)是Synopsys的个工具,用于集成电路设计中的时钟树综合。TCL是工具命令语言,用来编写脚本控制工具。 “set_propagated_clock”这个命令的作用是将指定的时钟设置为传播时钟,也就是工具会考虑时钟网络的延迟,而不是使用理想的时钟模型。用户使用“[all_clocks]”可能是指所有定义的时钟。 接下来,我需要确认这个命令的正确语法,是否有参数需要注意。比如是否需要用大括号还是方括号,以及是否需要指定具体的时钟列表。 另外,用户可能是在时钟树综合之后使用这个命令,因为在CTS之前通常用理想时钟,之后才切换为传播时钟。需要解释这个命令在流程中的位置和必要性。 还要考虑用户可能的疑问,比如为什么要设置传播时钟,有什么影响,会不会影响时序分析的结果。需要说明传播时钟和理想时钟的区别,以及使用后的步骤,比如时序验证等。 可能用户是新手,所以需要步骤清晰,用例子说明,比如在CTS后执行该命令,然后进行后续优化。同时提醒常见错误,比如忘记设置导致时序分析不准确。 需要检查是否有其他相关命令或注意事项,比如是否所有时钟都需要传播,或者某些特殊时钟是否需要例外处理。确保回答准确,避免误导用户。 最后,组织语言,分点说明命令的作用、使用时机、语法示例和注意事项,使用户能够理解并正确应用该命令。</think>在集成电路设计流程中,`set_propagated_clock [all_clocks]` 是 Synopsys IC Compiler (ICC) 工具中用于时序分析的重要 Tcl 命令。以下分步骤说明其作用和使用方法: 1. **命令功能** - 此命令将指定时钟从理想模型(ideal clock)切换为传播模型(propagated clock) - 传播时钟会计算实际时钟网络的延迟(包括缓冲器延迟和线延迟) $$ \text{时钟延迟} = \sum(\text{缓冲器延迟}) + \sum(\text{互连线延迟}) $$ 2. **使用时机** - **CTS 前**:使用理想时钟模型(零延迟或用户定义延迟) - **CTS 后**:必须执行此命令以应用实际时钟树延迟数据 - 典型流程顺序: ``` 执行时钟树综合(CTS) → set_propagated_clock [all_clocks] → 进行时序签核(Timing Sign-off) ``` 3. **语法解析** ```tcl set_propagated_clock [get_clocks CLK1] # 指定单个时钟 set_propagated_clock [all_clocks] # 应用于所有已定义时钟 ``` - `all_clocks` 是预定义的 Tcl 变量,会抓取当前设计中所有时钟对象 4. **关键影响** - 时序分析会基于实际时钟网络延迟计算建立时间(Setup Time)和保持时间(Hold Time) - 理想时钟与传播时钟的差异示例: ```tcl # 理想时钟模型 create_clock -period 10 [get_ports CLK] # 传播时钟模型(CTS后) set_propagated_clock [get_clocks CLK] ``` 5. **注意事项** - 未正确设置传播时钟会导致时序分析结果不真实 - 执行后需通过 `report_clock_timing` 验证时钟延迟数据 - 与 `set_clock_latency` 命令的互斥性:传播时钟模式下不再接受人工指定的时钟延迟 6. **调试技巧** 若发现时序违例异常,可临时恢复理想时钟进行对比分析: ```tcl set_ideal_network [get_pins clk_tree/buffer*] # 隔离部分时钟网络 reset_propagated_clock [get_clocks CLK] # 复位指定时钟状态 ``` 建议在 CTS 后立即执行此命令,并配合 `update_timing` 命令刷新时序数据,以确保后续优化步骤基于真实的时钟网络参数进行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日晨难再

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值