在《delayline设计demo》一文中,我们知道delayline的具体delay值是通过其输入端口delay\_ctrl来调节档位决定的。这个delay\_ctrl可以接到寄存器中,通过MCU来配置;也可以接到某些特定电路的输出,通过硬件来配置。那在实际项目中,我们是如何是去确定delay\_ctrl的具体值的呢?本文以flash控制器为例,提供几个思路,供大家思考。
思路一
delayline只加在clock上。在STA修timing的过程中,将data bus做齐。然后在实际使用中,通过校准电路去遍历所有的档位,对flash进行读写比对。倘若在第5档和第10档之间读出来的数据和写进去的数据都是可以比对成功的。那就说明采样窗口是5到10档之间,我们可以取中间值7或8。
优点:
- 占用的资源少。
缺点:
- 需要做读写操作,耗时长。
- 在STA中,很难保证所有corner都能够满足对齐的条件,特别是lib一致性不好的情况。
思路二
delayline只加在clock上,然后在系统中加上一个温度传感器,并在产品测试的过程中,给芯片设置不同的工作环境,例如三温测试。遍历所有的工作环境,并将每种情况的采样窗口中间值记录起来,最终得到一张表。在实际中,我们再将这张表存到一片memory里,根据温度传感器的输出去查找表中去相应的值。
优点:
- 在实际工作中不需要进行读写操作,可以缩短初始化和校准的时间。
缺点:
- 不仅要加传感器,还要加memory,增加制造成本。
- 增加了测试难度和测试成本。
思路三
delayline加在data bus上,或者同时加在data bus和clock上。使用思路一的方法去进行遍历。
优点:
于前面两种方案相比,兼容性更强。
缺点:
- 档位的组合太多,遍历时间太长。
END
作者:七点班车
原文链接:IC小迷弟
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏。