逻辑综合学习者
这个问题很实际,我面试时被问过,后来做项目也踩过坑。简单说,笔试常考的就是 ICG 电路、时序影响、STA 设置。
电路图方面,标准 ICG 是锁存器 + 与门。锁存器 D 接 enable,CLK 接原始时钟(假设低电平透明),Q 接与门的一个输入,另一个输入接原始时钟,输出就是门控时钟。锁存器的作用是防止使能信号变化时产生毛刺。因为当 CLK 为低时,锁存器透明,enable 直接传到 Q;当 CLK 变高时,锁存器锁存当前的 enable 值,在整个高电平期间保持不变。这样与门输出的时钟只在 enable 为高且 CLK 为高时才有效,避免了 enable 在时钟高电平时变化导致的毛刺。如果用触发器,需要时钟沿触发,容易因时序对齐问题产生短脉冲。
对时钟树 skew 和 latency 的影响:门控单元相当于在时钟路径上插入逻辑,会增加 latency。如果门控单元放在时钟源附近,那么门控后的时钟树需要重新平衡,可能会增加 skew。通常,在 CTS 阶段,工具会把门控单元当作时钟树的一部分,进行缓冲和平衡,以控制 skew。但要注意,门控使能信号本身是数据信号,它的延迟会影响门控时钟的有效性,所以也要约束使能路径的时序。
综合和 STA 处理:综合时,一般用 compile_ultra 或类似命令,工具会自动识别时钟门控结构并映射到工艺库中的 ICG 单元。如果没有自动识别,可能需要手动实例化 ICG 单元。在 STA 中,关键是要设置正确的时钟门控检查。使用 set_clock_gating_check 命令指定建立保持时间要求,通常基于库中 ICG 单元的时序信息。同时,要检查使能信号到锁存器的时序,以及门控时钟到寄存器的时钟路径。在 PrimeTime 等工具中,还需要考虑门控时钟的传播和约束。
常见坑:一是使能信号可能来自不同时钟域,需要同步处理,否则亚稳态可能传到门控时钟;二是门控时钟的时钟质量(duty cycle、jitter)可能受影响,需要验证;三是在 DFT 测试时,门控时钟可能妨碍扫描链测试,需要插入测试模式绕过门控。笔试时如果能提到这些,会加分。
