其他分享
首页 > 其他分享> > Spyglass CDC工具使用(四)

Spyglass CDC工具使用(四)

作者:互联网

  最近一直在搞CDC (clock domain crossing) 方面的事情,现在就CDC的一些知识点进行总结。

做CDC检查使用的是Spyglass工具。以下内容转载自:Spyglass之CDC检查(4) | 码农家园 (codenong.com)

文章目录

  

CDC_verify_struct过程主要检查设计中是否有未同步的信号,是否有毛刺。在多时钟设计中,要考虑哪些信号需要同步?用什么同步方法?如果处理不当,则会在设计中引入亚稳态或者数据丢失。亚稳态产生的根本原因是建立时间或保持时间不够。本文先简单介绍CDC常用同步方法,再介绍CDC_verify_struct中的rules

同步方法

note: 本节相位差单位为纳秒

哪些信号需要同步

时钟有效跳变沿的相位差是固定的,称为同步时钟。如下图clk1和clk2,虽然两者频率不一样,但有效边沿(上升沿)之间的相位差固定为T, 2T, 3T,因此可称为同步时钟。
在这里插入图片描述
无法判定两个时钟有效边沿相位差,称为异步时钟。不同DPLL或晶振的时钟一定是异步时钟。信号跨异步时钟传输时如果不做同步处理,很容易引起亚稳态和数据丢失。如下图所示。
在这里插入图片描述
同一个DPLL或晶振的时钟称为同源时钟。同源时钟根据频率和相位可以分为:

 

 

只要设计中的时钟不都是同频零相位差,就要考虑信号传输时是否会引入亚稳态,是否有数据丢失。

常用同步方法

跨时钟域传输的信号可以分为两类:

Rules

AC_unsync01/02

报告跨时钟传输中未同步的信号。如果此项违例,应检查:

AC_sync01/02

报告设计中已经同步的信号。这项规则只是报告信息,不会报告违例。

AC_conv01/02/03

报告设计中的聚合问题。聚合问题有可能会引起数据一致性(data coherency)问题,即同步前的数据与同步后的数据不一致。
AC_conv01规则报告信号经过同步器+寄存器后聚合违例:

如果spyglass报出违例,但通过检查发现设计没有问题,可使用 cdc_false_path , quasi_static, cdc_filter_conherency等命令约束。

AC_conv02规则报告信号经过同步器后聚合违例,且聚合后又通过寄存器:

cdc_filter_coherenct -unrelated sync[0:3] sync_1
gray_signals -nam sync[0:3]

AC_glitch03

报告设计中的毛刺

竞争: 组合逻辑电路中,同一信号经不同的路径传输后,到达电路中某一会合点的时间有先有后(每条途径的组合逻辑污染延时不同),这种现象称为逻辑竞争,而因此产生输出干扰脉冲的现象称为冒险。
冒险: 信号在器件内部通过连线和逻辑单元时,都有一定的延时。延时的大小与连线的长短和逻辑单元的数目有关,同时还受器件的制造工艺、工作电压、温度等条件的影响。信号的高低电平转换也需要一定的过渡时间。由于存在这两方面因素,多路信号的电平值发生变化时,在信号变化的瞬间,组合逻辑的输出有先后顺序,并不是同时变化,往往会出现一些不正确的尖峰信号,这些尖峰信号称为"毛刺"。如果一个组合逻辑电路中有"毛刺"出现,就说明该电路存在冒险。
毛刺: 数字电路中常将毛刺定义为采样间越过逻辑门限一次以上的任何跳变,主要是指电路输出波形中含有时间很短有规律或没有规律的脉冲而又对设计没有用处或产生其他影响,一般都要考虑去除毛刺。
脉冲: 在电子技术中,脉冲信号是一个按一定电压幅度,一定时间间隔连续发出的脉冲信号,在单位时间内所产生的脉冲个数就称为频率。例如手电筒打开灯亮,这是直流,不停的开关灯亮、熄,就形成了脉冲,开关速度的快慢也就是脉冲频率的高低。
The reason for 竞争冒险: 数字电路中的竞争与冒险出现在组合逻辑电路中。由于延迟时间的存在,当一个输入信号经过多条路径传送后又重新会合到某个门上,由于不同路径上门的级数不同,或者门电路延迟时间的差异,导致到达会合点的时间有先有后,从而产生瞬间的错误输出。
The judgement for 竞争冒险: 只要输出端的逻辑函数在一定的条件下能简化成 Y = A + A’ 或者 Y = A·A’,那么就可以判断存在竞争-冒险现象。
The resolve of 竞争冒险: 接入滤波电容、引入选通脉冲、修改逻辑设计等等。
转载于:https://www.cnblogs.com/PG13/p/10329675.html

在下图设计中,D0与I1信号达到与门时间不同,C0处容易输出毛刺,如果该毛刺恰好被CLK2时钟域的寄存器采到,则设计容易出错。应将CLK1的组合逻辑修改成寄存器输出。
在这里插入图片描述

Clock_sync05/06

Clock_sync05报告输入信号被多个时钟域下寄存器采样,如下图中,输入信号在clka和clkb中被采样。
在这里插入图片描述

Clock_sync06报告输出信号由多个时钟域信号组合而成。
在这里插入图片描述
若确保设计没有问题,可使用set_case_analysisquasi_static命令加强对输入信号的约束。

setup_quasi_static

准静态寄存器是指设计中的输入信号、寄存器、线网在芯片工作开始时改变,但在接下来的工作中保持为0或1。
在这里插入图片描述

setup_quasi_static报告设计中spyglass推断出的准静态寄存器约束脚本约束的静态寄存器。应仔细检查信号是否满足准静态寄存器的定义。如果信号被spyglass错误推断为准静态寄存器,那么当芯片工作时,该信号变化可能会引起功能出错。

 

标签:AC,同步,CDC,同步器,信号,寄存器,工具,Spyglass,时钟
来源: https://www.cnblogs.com/hxing/p/16454969.html