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

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

3天内不再提示

Clock Domain Crossing跨时钟域检查

冬至子 来源:陌上风骑驴看IC 作者:陌上风骑驴 2023-06-28 11:42 次阅读

图片

如今典型的SOC 芯片都功能复杂、接口丰富,在众多复杂功能中不可能所有功能都同时工作,为了能耗,大多数SOC 芯片都会切分成多个电压域,而丰富的接口就意味着庞杂的clock 和reset. 信号跨越不同domain 时都需要特别处理,比如跨power domain 时需要插入isolation 或level shifter 或 ELS, 对power domain 的处理,需要理清power domain 的关系,定义清楚power intent, 在设计、验证、实现端都需要做额外处理;相对于Power domain, 信号跨越Clock domains 给设计、验证、实现带来的挑战会更大, 今天捋一捋实现端对跨Clock domains 的处理,主要是CDC check.

图片

从RTL 到GDS 实现过程每一步都需要做CDC check, 以保证输入正确且实现过程没有犯错。

图片

如何确定一个时钟域?

相位关系确定的两个或多个时钟称为同步时钟,所有被同步时钟驱动的时序逻辑,为同一时钟域;无确定相位关系的两个或多个时钟称为异步时钟。同步时钟跟异步时钟特别像夫妻关系跟情人关系,同步时钟像夫妻关系,有固定规则保护其正常运转,出轨就是setup 或hold 没修干净;异步时钟就如情人关系,没有任何规则可以保证共同财产不受侵犯,没有任何责任跟义务,所以需要除了灵肉上的交流之外尽量相互隔离。一个道理:信号是可以夸时钟域的,情人关系是可以有的,只要做好必要的隔离不影响社会规则正常运转就成。

图片

如果规避亚稳态?

数字电路是个1,0分明的世界,除此之外的状态都不是稳定状态,被称为亚稳态,亚稳态会导致电路功能失效,本来期待一个1结果来了一个0,功能失效,只能姐妹六九天长地久了。同步电路通过setup 跟hold 来规避亚稳态。

图片

但是对于异步电路而言,因为时钟相位不固定,无法保证来的一定是0或1,所以无法用静态时序分析的办法来规避亚稳态,办法总比问题多,聪明的工程师们拍着地中海造出了同步电路,虽然不能彻底规避亚稳态,但是只要使其发生的概率逼近于无限小,那情人还是情人,灵肉交流就能畅通无阻。

图片

在数字电路中用MTBF 来衡量亚稳态造成故障的风险,可能每家公司用于计算MTBF 的公式都不同,下面是网上找到的两个,看上去比较科学,根据MTBF 可以计算出在故障率可接受的范围内同步器所需要的寄存器级数。

图片

图片

常见的同步电路有哪些?

常见的同步电路有:

  • 由两级或多级寄存器组成的同步器 :这是最常见的同步器,用于同步单根信号或一组bus, 如果是同步一组bus 则这组bus 必须用格雷码。

图片

图片

  • MUX 同步电路 :如下图将dready 信号经过同步器送到目标时钟域,对于这种同步电路要在设计上保证:sready 信号必须相对于目标时钟保持m+1 个时钟周期,也就是说sready 在m+1 个dclk 周期内都不能跳变;同时在数据传输过程data 保持稳定,所谓的数据传输过程即dready 信号在dclk 时钟域有效期间。

图片

  • 握手同步电路 :如下图所示,是一个典型的握手同步电路,握手同步电路通过请求信号跟应答信号进行数据交流,当有数据需要传输时,源时钟域发出请求信号,同时发出数据,目标时钟域收到请求信号后将数据锁存,同时返回应答信号,源时钟域收到应答信号后,可改变数据,握手同步电路的弊端是latency 太长。对于握手同步电路,在设计上要保证:sreq 信号必须保持m+1 个dclk 时钟周期;data 信号必须保持m 个dclk 时钟周期;dack 信号必须保持m+1 个sclk 时钟周期;源时钟域在收到应到信号之前必须保持请求信号;在上一个请求传输没有结束之前不能发出新的请求。

图片

  • **异步FIFO: **异步FIFO 应该是大家最熟悉的同步电路了,在学习Verilog 的时候都应该写过异步FIFO. 异步FIFO 还是常见的笔试面试题,根据需求算FIFO 深度。

图片

CDC check 在检查什么?

实现端的CDC check 工具,在做CDC check 时,首先根据SDC 确定时钟域,然后在设计中提取同步电路;然后再分析同步电路的各种问题,常见的检查有:

  • Convergence in the Crossover Path : 多路跨时钟信号通过组合逻辑进入同步器,这会导致源时钟域的glitch 传递到目标时钟域。

图片

  • Divergence in the Crossover Path : 同一个控制信号控制多路数据传输,如下图所示,用Trans_en 来同时控制数据和地址使能信号,但实际中,由于不同的同步电路『meta-stable settling 』时间不同,所以无法保证数据使能跟地址使能同时有效,从而导致功能错误。

图片

  • Divergence of Meta-stable Signal: 不要从同步器中间拉出一根信号用作他用,也不要在同步器中间插入多级buffer 或inverter.

图片

  • Re-convergence of Synchronized Signals : 多路跨时钟信号经过同步器后做逻辑运算,这跟同步一组bus 而没用格雷码的风险是类似的,无法保证不同路的同步器在目标时钟域信号稳定是同时的,各路同步器之间的skew 是无法确切知道的。

图片

图片

实现端做CDC check 是依赖于SDC 的,所以要确保在SDC 中 clock 关系定义正确。小编很好奇,在验证端的CDC check 是怎么做的?是否用『断言』更有效?

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

    关注

    31

    文章

    5254

    浏览量

    119292
  • SoC芯片
    +关注

    关注

    1

    文章

    587

    浏览量

    34765
  • RTL
    RTL
    +关注

    关注

    1

    文章

    384

    浏览量

    59535
  • 同步器
    +关注

    关注

    1

    文章

    91

    浏览量

    14572
  • FIFO存储
    +关注

    关注

    0

    文章

    103

    浏览量

    5946
收藏 人收藏

    评论

    相关推荐

    处理时钟(CDC)信号同步的最常见方法

    时钟( **Clock Domain Crossing,CDC** )通俗地讲,就是 **模
    的头像 发表于 09-20 11:24 3210次阅读
    处理<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>(CDC)信号同步的最常见方法

    怎么将信号从一个时钟传递到另一个时钟

    亲爱的朋友们, 我有一个多锁设计。时钟为50MHz,200MHz和400Mhz。如果仅使用400MHz时钟并使用时钟使能产生200Mhz和50Mhz时钟
    发表于 03-11 08:55

    cdc路径方案帮您解决时钟难题

    这一章介绍一下CDC也就是时钟可能存在的一些问题以及基本的时钟处理方法。
    的头像 发表于 11-30 06:29 7000次阅读
    cdc路径方案帮您解决<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>难题

    关于FPGA中时钟的问题分析

    时钟问题(CDC,Clock Domain Crossing )是多
    发表于 08-19 14:52 3231次阅读

    关于时钟的详细解答

    每一个做数字逻辑的都绕不开时钟处理,谈一谈SpinalHDL里用于时钟处理的一些手段方法
    的头像 发表于 04-27 10:52 4159次阅读
    关于<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>的详细解答

    如何调试设计中的时钟交汇问题

    本篇博文中的分析是根据客户真实问题撰写的,该客户发现即使时序已得到满足的情况下,硬件功能仍出现错误。最后发现,问题与时钟交汇 (Clock Domain
    的头像 发表于 08-20 09:32 5314次阅读
    如何调试设计中的<b class='flag-5'>时钟</b><b class='flag-5'>域</b>交汇问题

    如何调试设计中的时钟交汇问题

    本篇博文中的分析是根据客户真实问题撰写的,该客户发现即使时序已得到满足的情况下,硬件功能仍出现错误。最后发现,问题与时钟交汇 (Clock Domain
    发表于 08-02 11:44 312次阅读
    如何调试设计中的<b class='flag-5'>时钟</b><b class='flag-5'>域</b>交汇问题

    CDC时钟的基础概念

    时钟clock domain:以寄存器捕获的时钟来划分时钟
    的头像 发表于 08-29 15:11 2363次阅读

    CDC时钟的基础概念介绍

    时钟clock domain:以寄存器捕获的时钟来划分时钟
    的头像 发表于 12-26 15:21 1585次阅读

    介绍使用SVA的几个优势

    SVA支持多时钟clock domain crossing (CDC))逻辑,例如异步FIFO。
    的头像 发表于 01-13 16:00 778次阅读

    时钟电路设计总结

    时钟操作包括同步时钟操作和异步
    的头像 发表于 05-18 09:18 632次阅读
    <b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>电路设计总结

    FPGA时钟处理方法(一)

    时钟是FPGA设计中最容易出错的设计模块,而且一旦时钟出现问题,定位排查会非常困难,因为
    的头像 发表于 05-25 15:06 1759次阅读
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法(一)

    FPGA时钟处理方法(二)

    上一篇文章已经讲过了单bit时钟的处理方法,这次解说一下多bit的时钟方法。
    的头像 发表于 05-25 15:07 858次阅读
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法(二)

    CDC时钟处理及相应的时序约束

    CDC(Clock Domain Conversion)时钟分单bit和多bit传输
    的头像 发表于 06-21 14:59 1568次阅读

    如何处理时钟这些基础问题

    对于数字设计人员来讲,只要信号从一个时钟跨越到另一个时钟,那么就可能发生亚稳态。我们称为“时钟
    发表于 01-08 09:39 452次阅读
    如何处理<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>这些基础问题