前端设计:CRG 3--CDC error

#灵感# 整理一下严重的cdc error

目录

1、Ac_unsync01 ​

[2、Ac_glitch03 (xxx) :](#2、Ac_glitch03 (xxx) :)

[3、Ar_unsync01 (2) :](#3、Ar_unsync01 (2) :)

[4、Clock_converge01 (2) :](#4、Clock_converge01 (2) :)

[5、Clock_glitch05 (16) :](#5、Clock_glitch05 (16) :)

[6、Clock_info03a (99) :](#6、Clock_info03a (99) :)

[7、Clock_info03c (253) :](#7、Clock_info03c (253) :)

[8、Clock_sync06 (40) :](#8、Clock_sync06 (40) :)


1、Ac_unsync01

Ac_unsync01 (xx) : Checks unsynchronized crossings for scalar signals

这个error 报告 "未同步的标量信号跨时钟域传输", Ac_unsync01违规意味着会出现情况:

  1. 亚稳态风险:信号可能在不稳定状态被采样

  2. 功能错误:逻辑可能产生错误输出

  3. 系统崩溃:可能导致状态机挂死或数据损坏

举例子:

Unsynchronized Crossing:

destination flop xxxxx..hi_dbit_en, clocked by xxxx.U_GMAC0_REFCLK.C,

source flop xxxx.tpe_state[0], clocked by xxxxxx.div_clk.

Reason: Sources from different domains converge before being synchronized [Total Sources: 5 (Number of source domains: 3)]

这个error 报告 "未同步的标量信号跨时钟域传输",

具体来说,有5个来自3个不同时钟域的源触发器 ,在没有同步的情况下,汇聚并驱动同一个目标触发器。

解决:添加同步器

修复的方案:

信号类型 修复方案 预估工作量
控制信号(使能、复位、门控) 双触发器同步 简单,批量处理
状态信号(状态机状态、标志位) 握手协议 中等,需两端修改
配置信号(静态或准静态) 可waive(需论证) 需仔细评估

2、Ac_glitch03 (xxx) :

Reports clock domain crossings subject to glitches

时钟域交叉毛刺风险报告。举例子:

Destination flop 'xxxx.gmac0_mac_speed_1d[1:0]' clocked by 'xxxx.U_GMAC0_REFCLK.C' can glitch (3 source(s), 2 domain(s)).

Reason :'Sources from different domains in fanin,Source reconverges'

file+line: gmac0_mac_speed_1d <= {gmac0_phy_intf_sel[0],gmac0_mac_speed} ;

具体来说,触发器gmac0_mac_speed_1d 的输入端有来自2个不同时钟域的2个源,这可能导致在目标时钟域产生毛刺。

修复:为每个时钟域信号添加同步器、添加毛刺滤波器

// 原始代码(有问题)

always @(posedge U_GMAC0_REFCLK.C) begin

gmac0_mac_speed_1d <= {gmac0_phy_intf_sel[0], gmac0_mac_speed}; // ❌

end

// 修复方案:为每个异步输入添加同步器

reg gmac0_phy_intf_sel_sync;

reg gmac0_mac_speed_sync;

// 同步器链

always @(posedge U_GMAC0_REFCLK.C) begin

// 同步 gmac0_phy_intf_sel[0]

reg sync_stage1_sel, sync_stage2_sel;

sync_stage1_sel <= gmac0_phy_intf_sel[0];

sync_stage2_sel <= sync_stage1_sel;

gmac0_phy_intf_sel_sync <= sync_stage2_sel;

// 同步 gmac0_mac_speed

reg sync_stage1_speed, sync_stage2_speed;

sync_stage1_speed <= gmac0_mac_speed;

sync_stage2_speed <= sync_stage1_speed;

gmac0_mac_speed_sync <= sync_stage2_speed;

end

// 使用同步后的信号

always @(posedge U_GMAC0_REFCLK.C) begin

gmac0_mac_speed_1d <= {gmac0_phy_intf_sel_sync, gmac0_mac_speed_sync}; // ✅

end

3、Ar_unsync01 (2) :

Reports unsynchronized reset signals in the design

Ar_unsync01​ 是复位相关的严重错误,报告了未同步的复位信号跨时钟域传播。

例子:

Reset signal 'xxx.U_JTAG_TRSTN.C' for 'clear' pin of flop

'xxxx_core.u_dfd_tdr_top.u_dfd_tap.capturedr_r_n', //复位信号连接到触发器的 clear 端

clocked by 'asic_top.u_asic_io.U_JTAG_TCK.C', is unsynchronized by reason: Missing synchronizer //缺少同步器

解决:添加复位同步器

4、Clock_converge01 (2) :

Flags a clock signal whose multiple fan-outs converge

标记同一个时钟信号经过不同路径后重新汇聚到同一逻辑节点的情况。

核心问题

  • 同一个时钟信号(或同源时钟)通过不同路径(如经过缓冲器、分频器、门控单元等)后,重新汇聚到同一个组合逻辑节点

  • 由于路径延迟不同,可能导致时钟信号在汇聚点产生毛刺或时序竞争

5、Clock_glitch05 (16) :

Flags asynchronous sources that converge with different domain clocks

Clock_glitch05 报告一个异步信号与多个时钟域汇聚 的问题,是内部组合逻辑。

例子:Asynchronous source 'asic_top.EMMC0_SDCLK' converges with different domain clock(s) at 'asic_top.EMMC0_SDCLK'

6、Clock_info03a (99) :

Flags cases not checked for clock domain crossings due to unconstrained clocks

例子:Clock-Net 'asic_top.u_pcie_subsys.u_pcie_dev1_x4.u_phy.upcsi_phy_rx0_clk_mux' is unconstrained

这是一个时钟未约束问题,导致SpyGlass无法对该时钟域的CDC路径进行检查。

解决:添加时钟约束:create_clock -name xxx 或者 设置 set_case_analysis 0 xxxx

7、Clock_info03c (253) :

Flags cases not checked for clock domain crossings as the clock pin of flop/latch is tied to constant or driven by quasi-static signal

Clock_info03c​ 是SpyGlass CDC检查中的信息性规则,用于标记那些因时钟引脚被固定为常量或由准静态信号驱动,而无法进行CDC检查的触发器/锁存器。

8、Clock_sync06 (40) :

Reports primary outputs driven by multiple clock domain flip-flops or latches

报告被多个时钟域的触发器/锁存器驱动的顶层输出端口。是接口问题。

先这么滴放着,以后再补充

相关推荐
华玥作者13 小时前
[特殊字符] VitePress 对接 Algolia AI 问答(DocSearch + AI Search)完整实战(下)
前端·人工智能·ai
Mr Xu_14 小时前
告别冗长 switch-case:Vue 项目中基于映射表的优雅路由数据匹配方案
前端·javascript·vue.js
前端摸鱼匠14 小时前
Vue 3 的toRefs保持响应性:讲解toRefs在解构响应式对象时的作用
前端·javascript·vue.js·前端框架·ecmascript
lang2015092814 小时前
JSR-340 :高性能Web开发新标准
java·前端·servlet
好家伙VCC15 小时前
### WebRTC技术:实时通信的革新与实现####webRTC(Web Real-TimeComm
java·前端·python·webrtc
未来之窗软件服务16 小时前
未来之窗昭和仙君(六十五)Vue与跨地区多部门开发—东方仙盟练气
前端·javascript·vue.js·仙盟创梦ide·东方仙盟·昭和仙君
嘿起屁儿整16 小时前
面试点(网络层面)
前端·网络
VT.馒头16 小时前
【力扣】2721. 并行执行异步函数
前端·javascript·算法·leetcode·typescript
phltxy17 小时前
Vue 核心特性实战指南:指令、样式绑定、计算属性与侦听器
前端·javascript·vue.js
Byron070718 小时前
Vue 中使用 Tiptap 富文本编辑器的完整指南
前端·javascript·vue.js