本篇文章,介绍的是timing exception
Using Timing Exception
有一些path不存在,也不需要PT去计算,因为我们会告诉工具不要去计算这些path。
关于Timing Exception 主要有以下命令: set_false_path 移除掉不用PT去分析的path set_multicycle_path 允许超过一个clock的path set_max_delay 允许最大delay set_min_delay 允许最小delay
report_exceptions 验证在design中的任何timing exceptions reset_path restore default timing constraints on sepcified paths 清除所有的constraint
timing exception place from 和to 在deseign中的timing points 合法的start 点和end 点有: start点: 输入端口和寄存器的clk pin end 点: 输出端口和寄存器的data pin start点和end点同时指定: clock object(直接指定时钟)
另外还可以指定中间点 ,通过-through 选项,但是该选项非常浪费PT的计算时间。
如上图所示,对于第一个Q2_reg[*]/CP 假如说有32个reg,那么就是 Q2_reg[1] 到所有的fan_out、以及Q2_reg[2]到所有的fan_out 一直到Q2_reg[32]到所有的fan_out
对于第二种类,Q2_reg[*]到Q2_reg[ ] 可以表示reg1到reg1-32,然后是reg2-reg1-32 直到reg32-reg1-32 ,相当于3232种path
对于第三类写法,也就限定了只有32条 对于第四种写法,包含了所有的clk2到clk3
如上图所示,尽量不要使用-through,当然像上面sub-optimal中所示, 如果又把-from ,又把-through ,又把-to 写出来,当然是最好不过,尽量不要纯粹的去写-through
如上图所示,如果你实在没有办法,假如说你使用set_false_path 无法把-from 和-to 一一例举出来。 那么此时,你可以使用set_disable_timing 如上图所示,你可以把经过U12/A1的所有的path都设置为falth path。
对于哪些path,我们需要设置为falth path 对于一些logic不存在的路径、两个异步时钟之间
使用report_exception可以写出所有的你写过的exception 如上图所示,当我把来源于FF1/Q都设置为falth path,然后报告出来,我们就可以看到,只要是来源于FF1/Q的全部都设置为了falth path。
timing exception的优先级:如果在同一条path上面都设置有falth path,那么原则是,这条timing exception 谁覆盖得越多,就谁优先,工具也会优先处理。
multicycle path
如上图所示,像加法器类似的,肯定是在一个周期内是做不出来的。
如上图,延迟了多少个周期,-setup 6 就相当于 延迟了6个周期,类似于时钟是原来的1/6 上图,如果不去设置hold,那么hold check 在50ns。所以上面紫色的命令可以不设置,也会在50ns的地方check
如上图,如果把hold设置为5,那么hold的值将在0ns,也就是说允许数据在0ns~60ns时刻发生数据改变的,这个才是符合预期的。
|