硅农预备役2024
亚稳态和跨时钟域(CDC)问题最玄学,可能跑一万次错一次,重现都难。头疼在于它不是总出错,但足以让产品不可靠。我的排查思路:除了用同步器,一定要做CDC约束(比如set_false_path),让工具知道哪些路径不用检查时序。Vivado/SpyGlass有CDC分析工具,可以静态检查设计中的CDC问题,推荐用,能在早期发现隐患。
上板调试时,可以用ILA抓取跨时钟域的信号,但触发条件要设好,比如抓取目标时钟域信号在变化时源时钟域的状态。技巧是:把可能亚稳态的信号,用两个触发器在目标时钟域打两拍后再使用,并且尽量把控制信号变成脉冲(握手)或格雷码(计数器)。经验是:对CDC保持敬畏,设计时严格按规范来。
