《基于spyglass同步设计分析和静态验证》阅读笔记

  • 常见的CDC问题
    • 亚稳态
    • data hold数据保持的时间问题
    • 常见的两级触发器同步
    • 多bit信号采用简单的两级触发器同步
    • CDC中复杂的同步设计
    • 亚稳态总会有概率的存在
  • 单bit信号的CDC同步设计
    • 慢时钟域到快时钟域的同步情况
    • 快时钟域到慢时钟域的同步情况
  • 多bit信号的CDC同步设计
    • 握手协议同步设计
    • 异步fifo的同步设计
  • 异步复位信号的同步设计
  • spyglass工具的引入
    • 组合逻辑的输出不要直接用于异步处理

基于spyglass同步设计分析和静态验证 - 豆丁网
http://www.docin.com/p-1444334021.html

这篇论文,讲述了跨时钟问题的原理、实例分析及使用spyglass解决CDC(clock domain crossing)的办法。对于我来说,有很多参考价值。特此作一阅读笔记。作为以后不断精进的知识储备。

常见的CDC问题

亚稳态

建立保持时间违反,就会发生亚稳态。
《基于spyglass同步设计分析和静态验证》阅读笔记_第1张图片

data hold,数据保持的时间问题

这种情况,发生在快时钟到慢时钟域。由于快时钟域的数据信号,保持时间过短,不能被慢时钟域采样到。
《基于spyglass同步设计分析和静态验证》阅读笔记_第2张图片

常见的两级触发器同步

周期内存在亚稳态问题。所以两级触发器同步结构中,第一级触发器的输出,设计中是不允许参与任何组合逻辑的。
《基于spyglass同步设计分析和静态验证》阅读笔记_第3张图片

多bit信号,采用简单的两级触发器同步

这种设计是有问题的。会使得输出状态存在不可预期的一组或多组值。如果格雷编码后,再经过下述逻辑结构,能够保证输出状态不会存在不可预期的一组或多组值;一般会用到状态机的同步。
《基于spyglass同步设计分析和静态验证》阅读笔记_第4张图片
《基于spyglass同步设计分析和静态验证》阅读笔记_第5张图片

CDC中复杂的同步设计

  1. 异步fifo
  2. 握手协议的同步
  3. 单一使能信号形式的同步

亚稳态总会有概率的存在

这是因为触发器的亚稳态,无法在期望的时间范围内得到恢复。而且亚稳态会传递至后续的电路中。
这就引出了同步设计中的平均失效时间MTBF(Mean Time Between Failures);定义是:一个同步设计的触发器在设计规定的时间内,仍然进入亚稳态的概率。
《基于spyglass同步设计分析和静态验证》阅读笔记_第6张图片
其中亚稳态恢复时间=目的时钟域的周期-(组合逻辑的时间+Tsetup);理解来说就是亚稳态可以恢复的有效时间;超出这个亚稳态恢复时间,就会产生亚稳态的危害。
根据公式,可以看出,数据翻转率越低,目的时钟域频率越低、建立保持窗口越小;都会增加MTBF,即改善亚稳态的概率。增加亚稳态恢复时间,也可以改善亚稳态的概率。
由此,得出二级同步触发器结构的亚稳态恢复时间=目的时钟域的周期-(Tsetup);因为两级触发器的组合逻辑时间为0.
同理,得出二级同步触发器结构的亚稳态恢复时间=2*目的时钟域的周期-(Tsetup)。
《基于spyglass同步设计分析和静态验证》阅读笔记_第7张图片

《基于spyglass同步设计分析和静态验证》阅读笔记_第8张图片
所以,由上图可以得知,800MHz以上,出现亚稳态错误的几率会非常高,平均约3.43小时出现一次。而480MHz以下的时候,2.2994万年才会出现一次。所以,大于480MHz以上,就不要用二级触发器做同步了。
另外,三级同步触发器,只能改善,但是随着时钟频率的不断提高,仍然存在危险;而且会增加系统的总体延迟。
PS:《基于spyglass同步设计分析和静态验证》阅读笔记_第9张图片
这里,可以看出上面的概率,也许会因为这个常量,在不同环境里导致概率增大的情况。

单bit信号的CDC同步设计

慢时钟域到快时钟域的同步情况

有两种传输类型,一种是电平敏感的同步设计;一种是边沿敏感的同步设计。
《基于spyglass同步设计分析和静态验证》阅读笔记_第10张图片
《基于spyglass同步设计分析和静态验证》阅读笔记_第11张图片
原文介绍,异步输入信号必须满足一定的保持时间,这一点没理解。
当目的时钟域与源时钟域小于两倍的情况下,单bit的异步输入信号必须保持至少两个源时钟域的周期,这样才能不会产生数据的丢失情况.

快时钟域到慢时钟域的同步情况

《基于spyglass同步设计分析和静态验证》阅读笔记_第12张图片
这种结构,存在限制。
《基于spyglass同步设计分析和静态验证》阅读笔记_第13张图片
《基于spyglass同步设计分析和静态验证》阅读笔记_第14张图片

多bit信号的CDC同步设计

握手协议同步设计

《基于spyglass同步设计分析和静态验证》阅读笔记_第15张图片
具体实现,有三种握手同步设计。这里不再赘述,详情看参考文件。
《基于spyglass同步设计分析和静态验证》阅读笔记_第16张图片

异步fifo的同步设计

看文档的意思,是说异步fifo能完美解决异步处理。但是还没理解深入,待续。
《基于spyglass同步设计分析和静态验证》阅读笔记_第17张图片

异步复位信号的同步设计

《基于spyglass同步设计分析和静态验证》阅读笔记_第18张图片
不过要注意,同一个异步复位信号,不要多次做上述结构。可能是因为上图中的第一个异步复位宽度已经很窄,无法再执行一次同步设计吧?!

spyglass工具的引入

spyglass类似pt,是静态验证工具。特点就是不需要编写testbench,就可以验证。
《基于spyglass同步设计分析和静态验证》阅读笔记_第19张图片
这里可以结合spyglass的理解,进行演示脚本的执行过程。

组合逻辑的输出,不要直接用于异步处理。

因为会出现毛刺,解决办法,就是组合逻辑的输出,加一个触发器在源时钟域下采样一次。

你可能感兴趣的:(verilog,spyglass)