光
跨时钟域信号用 ILA 抓波形,最容易遇到的不是信号本身有问题,而是触发和采样没对齐。上周调一块板子,慢时钟域的握手脉冲在 ILA 里时有时无,查了两天才发现是触发条件写在了快时钟域。
第一,采样时钟要跟被测信号同域。ILA 的采样时钟如果取了快时钟,慢域脉冲可能在两次采样之间就过去了,看起来像丢事件。做法是给每个时钟域各挂一个 ILA,或者至少把触发信号先同步到采样域再触发。
第二,触发条件别用组合逻辑的毛刺。跨域握手常用两级同步,同步后的信号再展宽一个周期做触发,毛刺就不会误触发。我习惯把 req 同步后展宽,再用 ack 回落沿做结束条件。
第三,触发位置留足前后沿。ILA 触发位置设在中间偏前,至少留 30% 的预触发深度,这样能看到握手建立前的状态,而不是只看到触发点之后。
第四,深度不够时先降采样点数、抓关键窗口。把触发条件收窄到异常组合(比如 req 拉高后 10 个周期内无 ack),比全量抓更省深度。
最后提醒:抓之前先确认约束里 ILA 时钟没有被优化掉,综合后检查一下探针是否还在网表里。
大家在跨域调试时,有没有遇到过 ILA 抓到的波形和逻辑分析仪对不上的情况?你们一般先怀疑触发还是先怀疑同步器?
第一,采样时钟要跟被测信号同域。ILA 的采样时钟如果取了快时钟,慢域脉冲可能在两次采样之间就过去了,看起来像丢事件。做法是给每个时钟域各挂一个 ILA,或者至少把触发信号先同步到采样域再触发。
第二,触发条件别用组合逻辑的毛刺。跨域握手常用两级同步,同步后的信号再展宽一个周期做触发,毛刺就不会误触发。我习惯把 req 同步后展宽,再用 ack 回落沿做结束条件。
第三,触发位置留足前后沿。ILA 触发位置设在中间偏前,至少留 30% 的预触发深度,这样能看到握手建立前的状态,而不是只看到触发点之后。
第四,深度不够时先降采样点数、抓关键窗口。把触发条件收窄到异常组合(比如 req 拉高后 10 个周期内无 ack),比全量抓更省深度。
最后提醒:抓之前先确认约束里 ILA 时钟没有被优化掉,综合后检查一下探针是否还在网表里。
大家在跨域调试时,有没有遇到过 ILA 抓到的波形和逻辑分析仪对不上的情况?你们一般先怀疑触发还是先怀疑同步器?

