“共享时钟与数据路径的问题(Shared Clock and Data Concerns)” 解析

一、核心问题:时钟与数据路径复用的冲突

在芯片设计中,同一网络(net)可能同时用于时钟路径和数据路径,典型场景:

  • 寄存器 d1(时钟分频触发器)的输出,既驱动 f1 的时钟端(时钟路径),又连接到 f2 的扫描输入(SI,数据路径,用于扫描链测试)。

此时存在关键矛盾:

  • 该网络属于时钟树图(Clock Tree Graph),数据路径优化(如 “保持时间修复”datapath hold fixing)默认无法操作它;
  • 若 f2 输入出现保持时间违规(Hold Violation),数据路径优化因网络属于时钟树而无法插入缓冲器修复,导致时序问题无法解决。
二、默认限制:时钟树引脚的 “排除” 机制

f2 的 SI 输入默认被标记为 时钟树排除引脚(clock tree exclude pin),即:

  • 该引脚关联的网络属于时钟树图,但数据路径优化工具会跳过它,避免干扰时钟时序。

但这也导致:若 f2 输入因时钟树延迟出现保持时间违规,数据路径优化无法通过插入缓冲器修复(因为工具被限制操作时钟树网络)。

三、解决方案:添加 “隔离缓冲器(Exclusion Buffer)”

通过命令 ccopt_add_exclusion_drivers 插入隔离缓冲器,实现:

  1. 隔离时钟树与数据路径

    • 缓冲器的输入被标记为 时钟树忽略引脚(clock tree ignore pin),脱离时钟树图的约束;
    • 缓冲器的输出连接 f2 的 SI 输入,使 f2 输入与原时钟树网络解耦。
  2. 恢复数据路径优化能力

    • 隔离后,缓冲器与 f2 之间的网络不再属于时钟树图,数据路径优化(如保持时间修复)可自由操作该段网络,插入缓冲器修复时序违规。
四、流程与命令解析
1. 问题场景(修复前)
  • 网络 d1_out 同时属于时钟路径(驱动 f1 时钟)和数据路径(驱动 f2 SI);
  • f2 SI 输入因 d1_out 延迟出现保持时间违规,但数据路径优化无法操作 d1_out
2. 插入隔离缓冲器命令

tcl

ccopt_add_exclusion_drivers -pins [get_pins f2/SI]  

  • 作用:为 f2 的 SI 引脚插入隔离缓冲器,将其输入标记为时钟树忽略引脚。
3. 修复后效果
  • 隔离缓冲器输入(原 d1_out 网络部分)仍属时钟树,但输出到 f2 的网络脱离时钟树约束;
  • 数据路径优化工具可在隔离缓冲器与 f2 之间插入缓冲器,修复保持时间违规。
五、工程价值与验证
1. 设计收益
  • 时序收敛:解决时钟与数据路径复用导致的优化冲突,允许修复原本无法处理的保持时间违规;
  • 测试兼容性:支持扫描链测试需求(SI 引脚的数据路径功能),同时保证时钟路径的时序完整性。
2. 验证方法
  • 检查隔离缓冲器

    tcl

    report_ccopt_exclusion_drivers -pins [get_pins f2/SI]  
    
     

    确认缓冲器已插入,且输入被标记为时钟树忽略引脚。

  • 时序修复验证

    tcl

    report_timing -hold -from [get_pins d1/Q] -to [get_pins f2/SI]  
    

     

    修复前:保持时间违规;插入隔离缓冲器并优化后:违规消失。

六、总结

“共享时钟与数据路径” 的核心矛盾是优化域的冲突(时钟树 vs 数据路径),通过 ccopt_add_exclusion_drivers 插入隔离缓冲器:

  • 解耦时钟树约束与数据路径优化;
  • 既保证时钟时序不受数据路径操作干扰,又允许修复数据路径的时序违规。

这是扫描链测试(Scan Chain)与时钟树综合(CTS)协同设计中必须的关键步骤,直接影响芯片的测试覆盖率和时序收敛。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值