深入理解CDC
文章平均质量分 57
最近在研究spygalss的CDC工具,本专栏主要讨论CDC中较为复杂的问题,适合有一定设计经验的朋友阅读
飞哥一芯
芯片行业奋战十余年老兵。
展开
-
absrtrac约束到非clk的port上带来的问题
因此sgdc认为di_2没有时钟。2.由于port di_vld未约束时钟,打开了参数use_inferred_abstract_port,工具会给该port上推断一个时钟。1.4port不约时钟,被两个异步时钟采样,打开use_inferred_abstract_port,会在此port上同时i推断出两个采样时钟,报两个unsync。1.2给port约到存在的port上,打开use_inferred_abstract_port,认为port没有时钟,不报ac_unsync。通过实验,得到sg的逻辑如下。原创 2024-05-24 11:16:39 · 234 阅读 · 0 评论 -
sgdc中sync_cell 通配符问题
因此约束语句sync_cell -name test1 -to_clk "clk[*]"和sync_cell -name test2 -to_clk "clk[*]"其实都是只对clk[2]生效。相当于sync_cell -name test1 -to_clk "clk[2]" 和sync_cell -name test2 -to_clk "clk[2]1.只保留test1作为sync_cell,同时存在clk[1]和clk[2]的cdc路径,结果clk[1]同步失败,clk[2]同步成功。原创 2024-05-24 13:14:57 · 144 阅读 · 0 评论 -
data汇聚和时钟汇聚的sdc约束
当输入的数据端是两个时钟域的信号汇聚而成时,被同一个时钟采样时,约束如下。当输入的数据端被两个时钟mux后采样,约束如下。abstract_port对于port的约束。原创 2024-05-24 13:51:09 · 193 阅读 · 0 评论 -
深入理解CDC(四)难点理解
可以这么理解,当en为0时,D端输入为0,Q端输出为1。在en拉后的,clk为上升沿时,q输出为0,在很短时间后set端为1,q输出为1,因此会输出一个很短时间的0,所以形成毛刺。如果enbale高有效,当rst释放后en入口为0,en无效,in信号无法通过。enable未做约束时,the Ar_syncrst_setupcheck01 rule reports a warning (如果enbale低有效,当rst释放后en入口为1。当clk和复位/置位信号用同一个en进行gate时,会有潜在的竞争。原创 2024-01-22 13:46:13 · 589 阅读 · 0 评论 -
深入理解CDC(五)一文讲透CDC
此文为本人在公司内部作为培训的ppt改编。原创 2024-01-25 10:18:00 · 548 阅读 · 0 评论 -
深入理解CDC(三)CDC问题分类
2.reset_check:复位规则检查latches, tristate signals, or XOR/XNOR gates in a reset tree。1.data_glitch:数据跨时钟前存在组合逻辑,会导致数据glitch。4.Ac_cdc:跨时钟域数据丢失。快时钟域到慢时钟域采样数据丢失问题。2.clk_glitch:两个时钟直接进行组合逻辑。3.Clock_sync:跨时钟域数据汇聚问题。5.ac_conv:数据跨时钟域后再进行汇聚。1.Ac_unsync:跨时钟域未作处理。原创 2024-01-04 10:10:53 · 772 阅读 · 0 评论 -
深入理解CDC(二)复位同步
N1为c2时钟域下的复位信号,当在c1时钟域下用作异步复位时,当RST1释放时,产生的复位信号N1属于C2时钟域,N1释放时,复位的recovery time可能不满足,会产生亚稳态问题。下图是一个典型的复位跨时钟域问题,会产生复位的亚稳态。同步器必须和src匹配,如果是来自其他clk时钟域的使能信号,不会倍看作一个有效的同步器。由于第一次同步后的复位信号存在亚稳态,如果目的端复位信号存在多个扇出,同步失败。以上为一个典型的异步复位同步释放电路,in信号通常接为固定的常值。3.典型异步复位同步失败电路。原创 2023-12-22 17:11:00 · 472 阅读 · 0 评论 -
同源的分数倍时钟是同步还是异步时钟?
前面介绍同步问题时有说明,当信号从快时钟域传递到慢时钟域时,只要慢时钟域能安全采集到从快时钟域传来的信号,就不存在异步问题。但如果信号在快时钟域翻转速率过快,慢时钟域可能不会安全的采集到从快时钟域传来的信号,这也可以认为是异步问题。此时两个时钟间相位差也可能会有多个,例如同源的 7MHz 时钟和 3MHz 时钟,他们之间也会出现多个相位差,时序也难以控制。此类情况下,一个时钟往往是另一个时钟的分频,即便存在相位差也是固定的。由两个不同的时钟源产生的两个时钟是异步的,这是最常见的异步时钟。原创 2023-12-22 13:58:59 · 175 阅读 · 0 评论 -
逻辑互斥和物理互斥的约束
比如在如下电路中,由于 C1 C2 在 F3 F4 之间是有交互的,而在 F1 F2 之间,只能是 C1-C1 或者 C2-C2,不可能出现 C1-C2 或 C2-C1。如果两个 clock 定义在同一个端口上,那么这两个 clock 在物理层面就是不可能同时存在的,此时就需要声明成 physical exclusive。这时就需要在 MUX 的输出端创建两个 generated clock,然后声明成 physical exclusive。仔细讨论下逻辑互斥和物理互斥的区别。原创 2023-12-22 09:53:01 · 243 阅读 · 0 评论 -
深入理解CDC系列(一)CDC处理方法
如果这个信号只在刚开始有变化,后面都是常值。如果把同步链的触发器数量配置为3,那么将F4 F5识别为后同步链,同样满足同步链。8.毛刺保护单元同步。同步链作为毛刺保护单元的en端输入。同步链作为使能端,跨时钟信号在数据端。7.and门同步方式。如果是或门加一个非门,也是可以的。以上为跨时钟域处理的方式,当然并不是所有方式都常见。这是最简单也是最常用的方式。5.2mux数据端的保持端为目标时钟域或者常值。同步链用于时钟门控的方案。3.使用同步单元进行同步。原创 2023-12-20 17:52:02 · 618 阅读 · 0 评论