|
楼主 |
发表于 2023-12-31 00:33:04
|
显示全部楼层
非常感谢Jake您的回复!如下我回复了些信息,方便看到不对的地方还请多指正,多谢!!!
Data-to-data check 属于 zero-cycle check。
这里的 phase shift 是由于时钟沿不同造成的,leading edge, trailing edge,画个图会清楚一些。
加个multicycle path可以避免phase shift。
set_multicycle_path -setup -to AutoBalance_flag_neg_sync1_reg/SN 1
Haier>>学习了。后面试下。对于hold是不是也要写下:set_multicycle_path -hold-to AutoBalance_flag_neg_sync1_reg/SN 1
本质上还是由于AutoBalance_flag_neg_sync1_reg同时带有SN, RN造成的。这两个pin之间在.lib里有non-seq check。
如果SN, RN的变化在时间上有一定的差别,理论上OK,实际使用还是会有麻烦,除非设计上就保证只有SN会变,或只有RN会变。
Haier>>是的,确实是.lib有 timing_type : non_seq_setup_rising; /timing_type : non_seq_hold_rising;
貌似有个更大的问题,报告中的时钟为scan_clock,scan mode下flop的RN, SN应该来自ATE可控的pin。目前这个样子像是没有插入DFT mux,要么DFT DRC不过,要么覆盖率大打折扣。
Haier>>谢谢您注意到这个,发完贴后来我们也发现这个问题,在scan mode下,这RN, SN设计中缺少了DFT mux,设计中需要去加的。后面要在rtl中分别对复位端逻辑(netlist中对应RN)和置位端逻辑(netlist中对应SN)分别加入DFT MUX,在后期测试的时候一次测试只测试一端比如RN, 另一端SN保持无效状态High。下一次pattern来测试SN端, 另一端RN保持无效状态High。确保一个时间只有SN会变或者RN会变,这样在scan mode测试中避开了RN, SN之间的non seq check timing 问题。
另外在function mode下, 复位端逻辑和置位端逻辑属于异步逻辑,复位信号来自于模拟,置位信号来自数字内部,在功能角度已经可以保证同一时间只会变化一端。
|
|
|