在前端设计中,对于放宽到多拍产生逻辑结果的运算路径,需要设置set_multicycle_path来放宽时序检查,加入要放宽到4拍检查的话,一般就是这样写(具体格式记不清了,大概是这个意思):
set_multicycle_path -setup 4 -from xxx -to xxx
set_multicycle_path -hold 3 -from xxx -to xxx
在我的认知中,当没有进行multicycle设置的时候,计算setup time vio和hold time vio分别是在第1拍和第0拍(以当前拍为第0拍):
因此呢对于multicycle的设置,我就一直认为,如上文所诉的设置方式,指的是在第4拍检查setup time vio,在第3拍检查hold time vio,直到我今天为下个项目的bes积累知识画书的时候才发现好像不是这样的:
总结一下意思就是,如果只有一句:
set_multicycle_path -setup 4 -from xxx -to xxx
那么工具会在第4拍检查setup time vio,在第3拍检查hold time vio。而此时如果加上了
set_multicycle_path -hold 3 -from xxx -to xxx
那么就会由第3拍检查向前推3拍恢复到第0拍检查hold time vio!
所以说,一直以来我的认知都是错误的,我一直都以为-hold 3是把hold time vio也推后3拍检查的,就很迷。