简而言之,DFF的复位置位信号不要在clk的跳变沿附近变化,而是要远离clk沿。
一般逻辑对此时序不用关心,比如很多模块的操作流程是复位完了,才开启模块时钟,再启动模块工作。这种流程可以保证不会出现recovery和removal的问题,因为复位置起撤销时都没有时钟;即使操作流程保证不了,出现recovery和removal违例,由于模块此时都不会工作,也没什么问题。
需要关心recovery和removal问题的最常见模块应该是CPU,因为一般CPU是在复位撤销后就开始工作。想象一下,CPU的工作其实是在很多个DFF一起配合完成的,如果复位撤销时刻在DFF的clock沿附近,势必导致各个DFF开始动作的步调不一致,导致无法预料的错误情形。
处理办法就是讲需要考虑recovery和removal问题模块的复位信号,用模块的工作时钟同步后,再送进模块使用。这样PR工具是会自动检查这个模块的DFF的时序并修正,直到没有recovery和removal的violation。对于其他没有要求的模块复位信号,设置false path不去检查这个时序即可。
转载自原文链接, 如需删除请联系管理员。
原文链接:异步复位信号的 recovery和removal,转载请注明来源!