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

相关阅读

静态时序分析icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12567571.html?spm=1001.2014.3001.5482


生成时钟

        上一节中,我们讨论了理想时钟和传播时钟的创建和使用,本节将讨论生成时钟及其与理想时钟和传播时钟的关系。

        图1所示的是一个简单的例子,两个级联的D触发器使用一个分频时钟作为它们的时钟。

图1 简单的例子

        下面使用create_clock命令在输入端口clk处创建一个理想时钟,图2是此时的建立时间时序报告。

create_clock -period 10 [get_clock clk]

图2 建立时间时序报告

        可以看出此时显示时序路径尚未约束,这是因为输入端口clk处的时钟,无法从一个分频D触发器的时钟端,传播至其输出端。这种情况下,需要在分频D触发器的输出端定义一个生成时钟(当然直接定义一个时钟也可以,但这是有缺陷的)。

        下面使用create_generated_clock命令创建一个二分频的生成时钟,指定的源引脚应该是主时钟的一个扇出引脚,此处指定为分频D触发器的时钟端;指定的源对象为分频D触发器的输出端。图3是此时的时钟报告。

create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2

 图3 时钟报告

        此时的建立时间时序报告如图4所示,可以看到这里已经成功用二分频时钟进行约束了。

图4 建立时钟时序报告

        需要注意的是,使用create_generated_clock命令创建的生成时钟和使用create_clock命令创建的时钟一样,也是一个理想时钟,它拥有自己独立的源延迟和网络延迟,它们都是使用set_clock_latency命令进行设置的。

        可以使用set_propagated_clock命令,将一个理想的生成时钟转化为一个传播的生成时钟。 

考虑三者之间的组合

        在已经了解三种时钟后,下面考虑这三者之间的组合,组合情况详见下表。

主时钟生成时钟生成时钟是否指定源延迟总延迟(不包含在其中的延迟都会被忽略)
理想理想生成时钟网络延迟(如有指定)
理想理想生成时钟源延迟+生成时钟网络延迟(如有指定)
理想传播生成时钟网络延迟(真实)
理想传播生成时钟源延迟+生成时钟网络延迟(真实)
传播理想主时钟源延迟(如有指定)+主时钟网络延迟(真实,由主时钟源对象到生成时钟源对象的时钟路径计算得出)+生成时钟网络延迟(如有指定)
传播理想生成时钟源延迟+生成时钟网络延迟(如有指定)
传播传播主时钟源延迟(如有指定)+主时钟网络延迟(真实,由主时钟源对象到生成时钟源引脚的时钟路径计算得出)+生成时钟网络延迟(真实)
传播传播生成时钟源延迟+生成时钟网络延迟(真实)

        下面将对以上情况分别举例说明,以图1为例,且各自独立。

理想主时钟+理想生成时钟+生成时钟不指定源延迟

        使用以下命令进行约束,此时的时钟报告如图5所示,建立时间时序报告如图6所示。

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_clock_latency 0.5 [get_clock clk_div2]

图5 时钟报告

图6 建立时间时序报告

理想主时钟+理想生成时钟+生成时钟指定源延迟

        使用以下命令进行约束,此时的时钟报告如图7所示,建立时间时序报告如图8所示。 

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_clock_latency 0.5 [get_clock clk_div2]
set_clock_latency -source 1 [get_clock clk_div2]

图7 时钟报告

图8 建立时间时序报告

理想主时钟+传播生成时钟+生成时钟不指定源延迟

        使用以下命令进行约束(注意,为了引入线延迟,使用了非理想的线负载模型),此时的时钟报告如图9所示,建立时间时序报告如图10所示,此处使用了-path full_clock选项和-significant_digits 7选项,便于观察细节,可以看出总延迟为从div_clk_reg/Q引脚到q1_reg_reg/CK引脚的线延迟0.0000015ns。  

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_propagated_clock [get_clock clk_div2]
set_wire_load_model -name tsmc13_wl50 -library typical

图9 时钟报告

图10 建立时间时序报告

 

理想主时钟+传播生成时钟+生成时钟指定源延迟

        使用以下命令进行约束(注意,为了引入线延迟,使用了非理想的线负载模型),此时的时钟报告如图11所示,建立时间时序报告如图12所示,此处使用了-path full_clock选项和-significant_digits 7选项,便于观察细节,可以看出总延迟为从div_clk_reg/Q引脚到q1_reg_reg/CK引脚的线延迟0.0000014ns(与上例不同是因为四舍五入)加上生成时钟指定源延迟1ns(被统计在生成时钟的clock source latency中)。   

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_propagated_clock [get_clock clk_div2]
set_clock_latency -source 1 [get_clock clk_div2]
set_wire_load_model -name tsmc13_wl50 -library typical

图11 时钟报告

图12 建立时间时序报告

传播主时钟+理想生成时钟+生成时钟不指定源延迟

        使用以下命令进行约束(注意,为了引入线延迟,使用了非理想的线负载模型),此时的时钟报告如图13所示,建立时间时序报告如图14所示,此处使用了-significant_digits 7选项,便于观察细节,可以看出总延迟为主时钟源延迟1ns加上从输入端口clk到div_clk_reg/D引脚的线延迟0.0000014ns加上从div_clk_reg/D引脚到div_clk_reg/D引脚的单元延迟0.7710956ns加上生成时钟指定网络延迟0.5ns,总计2.2710972ns。    

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_propagated_clock [get_clock clk]
set_clock_latency 0.5 [get_clock clk_div2]
set_clock_latency -source 1 [get_clock clk]
set_wire_load_model -name tsmc13_wl50 -library typical

图13 时钟报告

图14 建立时间时序报告

传播主时钟+理想生成时钟+生成时钟指定源延迟

        使用以下命令进行约束,此时的时钟报告如图15所示,建立时间时序报告如图16所示,此处使用了-significant_digits 7选项,便于观察细节,可以看出总延迟为生成时钟源延迟0.3ns加上生成时钟网络延迟0.5ns,总计0.8ns。 

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_propagated_clock [get_clock clk]
set_clock_latency 0.5 [get_clock clk_div2]
set_clock_latency -source 0.3 [get_clock clk_div2]

图15 时钟报告

图16 建立时间时序报告

传播主时钟+传播生成时钟+生成时钟不指定源延迟

        使用以下命令进行约束(注意,为了引入线延迟,使用了非理想的线负载模型),此时的时钟报告如图17所示,建立时间时序报告如图18所示,此处使用了-path full_clock选项和-significant_digits 7选项,便于观察细节,可以看出总延迟为主时钟源延迟1ns加上从输入端口clk到div_clk_reg/D引脚的线延迟0.0000014ns加上从div_clk_reg/D引脚到div_clk_reg/D引脚的单元延迟0.7710956ns(前面这些延迟被统计在生成时钟的clock source latency中),加上从div_clk_reg/D引脚到q1_reg_reg/CK引脚的0.0000014ns,总计1.7710984ns。

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_propagated_clock [get_clock clk]
set_propagated_clock [get_clock clk_div2]
set_clock_latency -source 1 [get_clock clk]
set_wire_load_model -name tsmc13_wl50 -library typical

图17 时钟报告

图18 建立时间时序报告

  • 36
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 20
    评论
### 回答1: "set_propagated_clock"是一个计算机术语,指的是在时钟同步过程中设置传播的时钟。在分布式计算中,多个计算机之间需要保持时钟同步,以便协同工作。其中一种方法是通过一个参考时钟来同步所有其他时钟,这个参考时钟称为传播时钟。通过设置传播的时钟,可以确保计算机之间的时钟保持同步。 ### 回答2: set_propagated_clock是一个时钟同步工具,可以帮助用户同步多个计算机系统中的时钟,以确保它们能够按照相同的时间基础工作。set_propagated_clock工具广泛应用于分布式系统中,例如计算集群、云计算平台等。 在分布式系统中,不同的计算机节点可能会具有不同的时钟误差。如果不及时进行时钟同步,会造成各种严重的问题,例如数据丢失、计算错误等。因此,set_propagated_clock通过网络进行时钟同步,从而保证各个计算节点的时钟误差在合理范围内。 具体而言,set_propagated_clock工具采用了一种称为时钟差值算法(clock offset algorithm)的同步方法。它通过测量网络延迟计算时钟偏差,来调整时钟的同步。该方法可以充分利用网络带宽和处理能力,并且具有高效、稳定、可靠的特点。 在使用set_propagated_clock工具时,用户首先需要在主节点上运行该工具,然后在需要同步的从节点上启动该工具。主节点会向从节点发送时间信号,并与从节点进行交互,从而确定精确的时钟同步。通过这种方式,所有计算节点的时钟都可以同步,并且能够按照相同的时间基础进行工作。 综上所述,set_propagated_clock是一个非常有用的分布式系统时钟同步工具。它可以帮助用户解决多种计算和通信问题,并提供高效、可靠、准确的时钟同步服务。如果您需要在分布式系统中实现时钟同步,set_propagated_clock是一个非常值得推荐的工具。 ### 回答3: set_propagated_clock是一个在计算机科学中使用的术语,在操作系统和计算机系统领域,它通常用于描述一种同步时钟的方式,其通过调整计算机系统中不同设备的时钟信号,以确保它们之间的时间同步。 在一个计算机系统中,不同的设备如处理器、内存、外部存储设备等都有自己的时钟信号,它们可能是独立的硬件时钟或是与其他设备紧密相连的软件时钟。这些时钟信号是非常重要的,因为它们包含了计算机系统的计时和计数信息,这些信息能够影响到设备的性能和计算结果。 然而,由于硬件和软件的不一致性,不同的设备可能会出现时钟偏移或时钟漂移,导致它们之间的时间差异逐渐增大。这种时间差异可能会导致一些系统级的问题,如文件系统错误、网络通信错误等。 为了解决这些问题,set_propagated_clock被引入。这种方法会调整计算机系统中不同设备的时钟信号,以保持它们之间同步。它会通过一些算法和协议,自动地选择一个比较准确的时钟信号,然后将其传递到其他设备上。 一些常见的set_propagated_clock算法和协议,如NTP(网络时间协议)、PTP(精确时间协议)等,它们使用不同的技术和算法来保持设备之间的时钟同步。这些算法和协议能够识别并补偿设备之间的时钟偏移和漂移,从而确保计算机系统中的所有设备具有同步的时钟信号。这种同步可以提高系统效率、减少错误和故障,并提高系统的稳定性。 总之,set_propagated_clock是一种重要的技术,在计算机系统中保持设备之间的时钟同步。它能够提高系统效率、减少错误和故障,并提高系统的稳定性,因此它在操作系统和计算机系统领域得到了广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

日晨难再

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

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

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

打赏作者

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

抵扣说明:

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

余额充值