0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

探讨下clock的基本定义(下)

冬至子 来源:码农的假期 作者:Clark Zhao 2023-07-06 15:34 次阅读

Clock Latency简介

要探讨今天的主题,首先需要跟大家一起学习下clock latency这个基本概念。Clock latency通俗意义上是指clock定义点到clock sink point(时序器件的clock Pin)之间的这段延迟时间。其分为两类,其中一类为,source latency,另外一类是network latency。

**source latency ** :也称作insertion delay,通常是指clock source端到clock定义点之间的这段时间延迟;通常有两种情况,其一:clock 直接来自于芯片外部,如crystal clock,此时,source latency指的是芯片外部crystal出口到芯片PAD(假如clock定义在此处)之间的时间延迟;其二:clock 来自于芯片内部的PLL,此时,source latency指的是芯片内部PLL输出点到芯片内部某个第一个clock定义点之间的这段时间。

network latency :其指的是clock定义点到clock sink point之间的这段时间。

这两种latency是每一个clock的固有属性,当CTS完成之后,每一个clock如果是在propagation状态下,其source latency和network latency都是确定的。当然,在前期(PR之前或者CTS之前),通常情况下clock都处于ideal状态,为了能够模拟真实的情况,我们可以通过指令set_clock_latency去指定每个clock的source latency或者network latency,具体此指令的用法,我们这里不详细解释了,有兴趣,有需要的可以自己去查阅相关资料

图片 图1 clock latency 示例

create_clock和create_generated_clock的不同点简介

通常定义clock的方式有两种,create_clock和create_generated_clock。再上次有具体介绍过,这两个指令的使用。那么他们之间有哪些使用上的区别以及各自都有什么特点呢?大体总结如下:

  • create_generated_clock能够继承其master clock phase,换句话说:generate clock的边沿(rise or fall)是通过继承master clock得到的。
  • create_generated_clock能够继承其master clock的source latency。
  • 通常情况下,create_clock的source latency为0.(在不特殊指定的情况下)
  • 每当设置一个create_clock,通常CTS时会构建一个新的clock domain。

Generate clock定义出错引入的clock edge识别出错

在上次,我们通过多个例子,分类说明了,如果generate clock定义不合理,会误导工具做出错误的timing分析的各种情形。但是具体工具timing分析会是什么样的呢?

图片

图2 错误的定义generate clock示例

如图2所示,如果直接在u_ckdiv2/Q点上,使用-divide_by 2 –master_clock clk的方式定义generate clock,那么工具认为的Q点的波形会是图2中右图所示的情况。这其实是与实际design的情况不符合的(假如DFF复位状态为0)。这时工具会认为的timing path check情况会如图3所示。从u_ff1/CK到u_ff2/D,整个timing path周期只有半个clk cycle。

图片

图3 错误的generate clock定义

如果我们能够正确的在Q-pin上定义generate clock,那么工具认为的Q-pin的波形会是图4中所示的情形。这时同样的timing path,从u_ff1/CK到u_ff2/D,工具做出的timing 分析会是图4中的情形。

图片

图4 正确的generate clock定义

当然,通过上面这个例子,虽然clock定义不合理,但是错误的clock的定义,单从edge的传播来看,其实是加紧了对design的约束,可能会浪费一些PPA,但是不会让design最终因为timing出错。

Generate clock定义出错引入的latency计算出错

其实,除了上面分析提到的会影响工具正确的判断定义的generate clock的edge之外,还会可能影响到工具错误的计算clock的latency。

如图5中的情形,如果采用图5中(左,中,右)所示的定义方式,由于在mux的Z-pin上已经定义了generate clock gclk1,而在定义generate clock clk_div时,如果其master clock还指向了gclk1前面的一个clock-clk1,那么此时clock其实定义是不合理的。因为从clk_div往前追,看到的第一个clock是gclk1,而clk1被其打断了,其clock属性不能再正确的往后传播。

图片

图5 错误的clock定义

也即上面提到的generate clock可以继承其master clock的source latency这个特性就不能正确的保持了,从而导致工具认为此处定义的generate clock的source latency将从0开始计算。如果此处的generate clock替换为create clock会是怎样的呢?大家可以思考一下。而如果想正确的继承master clock的source latency,那么此处,可以按照图5中右所示的方式定义clock。

Clock Group定义简介

上面提到create clock定义时,会伴随新的clock domain的创建,此时所提到的clock domain即指clock group。当然,clock group并不仅存在于create clock定义时,在generate clock定义时,也可以指定clock group。其主要目的是,人为的告诉工具,我们所定义的所有的clock之间的关系,从而减少工具自动化分析的情形,降低runtime,得到更好的PPA的结果。但是具体clock group怎么划分,是需要按照design架构决定的。我们在此处,先不会深究为什么要区分不同的clock group以及clock group划分的依据(后面其它系列文章中再做分析),而是跟大家详细的解释下定义clock group的方法以及注意点。

如图6所示,定义clock group我们SDC中右一条指令其为set_clock_group,详细的解释在图6中都已经给出,但是个人觉得还是有必要针对-logically_exclusive/-physically_exclusive/-asynchronous这三个option具体的分情况说明一下。

图片

图6 clock group定义

-logically_exclusive/-physically_exclusive/-asynchronous简介

Logically_exclusive : 其含义是指两组clock逻辑上不会同时存在。如图7中第2框图所示,虽然,clk1a/clk1b/clk2/clk3/clk4同时存在于整个design中,但是由于clock mux的select信号是相同的,所以从图中可以看出,S=1,此时前后两个mux分别选通clk2和clk4;如果S=0,则此时两个MUX分别选通clk1a/clk1b和clk3,也就是clk1a/clk1b/clk3和clk2/clk4是逻辑上不会同时存在的。所以他们之间就是logically_exclusive。

Physically_exclusive : 其含义是指两组clock之间物理上不会同时存在。如图7中第1框图所示。第一个clock mux中的clk1a和clk1b,这两个clock是来自于相同的path,同一时间,这两个clock物理上只有一个存在,所以他们便是physically_exlusive。

Asynchronous : 其含义是指两组clock之间功能上异步的。如图7中第3框图所示,clk1和clk2,在功能设计时便是采用的异步方式设计的,即clk2跟clk1之间完全不需要关心相位或者frequency之间的关系,功能上也是正确的,这时候这两个clock便是aysnchronous。当然aysnchronous的前提条件是design功能上要保证正确性。

图片

图7 clock group定义示例

图7中,如果换成第4框图中的定义方式,跟第3框图中的定义方式会有什么异同点?这个大家可以自己思考一下…

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PAD
    PAD
    +关注

    关注

    1

    文章

    97

    浏览量

    30654
  • PIN管
    +关注

    关注

    0

    文章

    36

    浏览量

    6312
  • PLL电路
    +关注

    关注

    0

    文章

    92

    浏览量

    6395
  • CTS
    CTS
    +关注

    关注

    0

    文章

    34

    浏览量

    14054
收藏 人收藏

    评论

    相关推荐

    揭开xenomai双核系统clock机制的面纱

    clock可以说是操作系统正常运行的发动机,整个操作系统的活动都受到它的激励。系统利用时钟中断维持系统时间、促使任务调度,以保证所有进程共享CPU资源;可以说,“时钟中断”是整个操作系统的脉搏。
    的头像 发表于 11-24 09:10 2126次阅读

    探讨,CRC校验的优势

    本帖最后由 ntmusic 于 2014-6-11 11:31 编辑 探讨,使用计算的2字节的CRC校验码和使用固定的2字节数据作为校验在保证数据传输正确方面有什么不同?
    发表于 06-11 11:21

    Stm32_Clock_Init函数如何定义

    Stm32_Clock_Init,这个函数我看的一些资料上似乎都是突兀的就提出来了,没有给出是如何定义的,而且我看了看,每本资料添加的函数库都不一样,我的是和资料上的就对不上,所以似乎有的函数我用不了,我想知道刚刚说的那个函数到底是如何给出的。。。。
    发表于 03-16 00:37

    介绍一STM32L151的clock tree

    首先来看一STM32L151的clock tree, 可以看到TIM2-7是在APB1上的, APB1的最大时钟配置是32MHz, 接下来我的及进行一我的项目中的始终配置说明,后续也会附
    发表于 07-16 10:03

    基于Stm32_Clock_Init()函数的流水灯设计

    原子的第一个例程流水灯中用了 Stm32_Clock_Init()函数,现在来解析一:引用时Stm32_Clock_Init(9);定义(此处省略了跑OS时的代码)看程序前,请确保理
    发表于 08-09 08:29

    请教一各位标准单元库中clock buffer的设计很复杂吗

    最近看了几篇关于时钟buffer的英文文章,看到很多做的clock buffer都很复杂,结构里面有charge pump、控制级等、还有PWCL等控制环。在这儿请教一各位,标准单元库中clock
    发表于 06-14 11:44

    S51载线的制作单片机实用技术探讨

    S51载线的制作——单片机实用技术探讨,有需要的都可以看看。
    发表于 07-20 15:48 22次下载

    浪潮与中桥探讨:新数据时代,存储的挑战与创新

    浪潮与中桥国际调研咨询有限公司(以下简称中桥)联合推出了《新一代存储,助推产业智能升级》白皮书,探讨新数据时代,存储的挑战与创新。
    的头像 发表于 08-15 15:19 3148次阅读

    企业云的软件定义存储

    软件定义是2012年VMware提出软件定义数据中心的概念,其中SDS作为软件定义数据中心一个非常核心的技术之一,软件定义计算、软件定义网络
    发表于 05-30 10:50 1066次阅读

    阿里巴巴探讨新基建数字经济分布式存储新机遇

    本次大会汇集众多领导、嘉宾,在此共同探讨新基建数字经济以及分布式存储技术的发展新机遇。
    的头像 发表于 08-17 14:21 2943次阅读

    软件定义汽车趋势的供应链变革

    面临附加值提供、定价策略、流程创新等调整。 软件定义汽车成为阶段车企与供应商转型的核心主题:企业需要从设计开发到组织运作的全面转型,来应对集成复杂度的提升和技术创新。 以下为报告节选: 原文标题:【行业资讯】软件定义汽车趋势
    的头像 发表于 11-03 15:12 2061次阅读

    Arduino IDE环境NodeMCU引脚定义

    Arduino IDE环境NodeMCU引脚定义在开发过程中,我们必须了解各GPIO在上层是怎么定义的,才能心中有数,合理调用个IO口#define PIN_WIRE_SDA (4)#define
    发表于 10-26 12:21 13次下载
    Arduino IDE环境<b class='flag-5'>下</b>NodeMCU引脚<b class='flag-5'>定义</b>

    探讨软件定义未来医疗的新蓝图

    东软解决方案论坛2021“软件定义未来医疗”分论坛正式上线。东软集团副总裁兼医疗解决方案事业本部总经理姚勇、东软汉枫董事长兼CEO卢朝霞与医疗领域的行业专家、客户一起,共同探讨“十四五”时期,建设数字中国战略背景,软件
    的头像 发表于 01-21 15:41 4140次阅读

    DC/DC评估篇 损耗探讨-定义和发热

    探讨损耗之前,我们先来看一损耗相关的定义以及发热和结温。损耗与效率:为了更好地理解,我们来看一效率的定义、以及效率与损耗之间的关系。效
    的头像 发表于 03-01 11:49 2131次阅读
    DC/DC评估篇 损耗<b class='flag-5'>探讨</b>-<b class='flag-5'>定义</b>和发热

    探讨clock的基本定义(上)

    Clock分为两大类,一类是root clock,其定义指令是create_clock;另外一类是generated clock,其
    的头像 发表于 07-06 15:31 2150次阅读
    <b class='flag-5'>探讨</b><b class='flag-5'>下</b><b class='flag-5'>clock</b>的基本<b class='flag-5'>定义</b>(上)