本帖最后由 ikey 于 2013-1-4 18:43 编辑
回复 14# zouxinfeng95321
您好,不一定能回答你的所有疑问,希望能对你有所帮助,在这里稍微唠叨点,一般而言,单周期path情况下,setup是下周期检查,而hold是同沿检查。当data path delay太长,多于一个周期,当不是每个周期都变信号的情况下,使用set_multicycle_path。
为了简单起见,这里举例n=3。首先说下setup检查, setup multicycle constraint说明了从uffo/ck到uff1/d需要花费3个时钟周期完成一个setup检查,即意味着每3个周期到uff1/q拿data,而不是原来的一个周期。
接着要检查hold了,通常情况下,希望是uff0/ck, uff1/ck同沿launch开始检查,这样能确保在n个clock周期内,data可以在uff0, uff1之间的data path上任何地方处于非稳态(只要满足setup hold)(见图一).如果不说明具体的cycle数,则在setup capture edge之前一个周期check hold,这样与违背了初衷,我们需要挪动hold check提早n-1=3-1=2个周期(见图二)与launch沿(0ns)作平,所以,hold multicycle中设置cycle数为n-1。
在大部分设计中,如果最大path或setup需要n个clock cycles,在大于n-1个clock cyclyes情况下,不可能获得最小path限制.
所以,大部分design中,一个multicycle setup说明n cycles,对应与hold说明n-1个周期.
第二个图包含手段
intent
第一个图包含目标
hold_move_back
|