走进Prime Time系列 - PT的Timing exception 03

本文详细介绍了如何使用TimingException进行时序分析,包括set_false_path移除不必要的路径,set_multicycle_path允许超时钟周期路径,set_max_delay和set_min_delay设置最大/小延迟。此外,还讲解了report_exceptions用于验证时序异常,以及reset_path用于清除约束。重点强调了合法的起点和终点选择,以及何时使用set_disable_timing。文章提醒避免过度使用through选项,并给出了设置false_path的例子。最后讨论了multicyclepath的重要性,特别是在处理加法器等无法在一个时钟周期完成的运算时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


本篇文章,介绍的是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时刻发生数据改变的,这个才是符合预期的。

使用HAlcon生成一个600*600像素的标定板,可以通过以下步骤来实现: 1. 首先,确定标定板上图案的大小以及间隔。在这个例子中,图案的大小被设定为600x600像素,而每个图案之间的间隔为2mm。需要注意的是,像素与实际物理单位(毫米)的转换关系,即每个像素代表的实际物理尺寸。 2. 使用HAlcon的`gen_caltab`操作符来生成标定板。这个操作符允许用户指定标定板的尺寸、图案数量、图案间隔、图案的形状以及类型等参数。 3. 在设置`gen_caltab`参数时,需要考虑实际的打印分辨率。例如,如果打印机的分辨率是300dpi,那么每毫米大约有12个像素点(300/25.4 ≈ 11.81)。因此,要得到2mm的间隔,需要在参数中指定48个像素点的间隔(2mm x 12像素/mm ≈ 24像素),以确保物理间隔为2mm。 4. 使用`gen_caltab`时,还必须指定图案的其他参数,比如图案是圆点还是正方形,图案大小,以及是否需要添加边界或文本等。 示例代码如下(假设HAlcon环境已正确配置): ```halcon * 假设每个像素代表的实际物理尺寸已经知道,这里以12个像素代表2mm为例。 * 生成600x600像素的标定板,每个图案间隔48个像素点。 gen_caltab ('calibration_target', 'dot_grid', 600, 600, 1, 1, 48, 1, 'last', CaltableView) ``` 在上述代码中,`'dot_grid'`指定了使用点阵图案,`600, 600`是标定板的尺寸,`1, 1`表示图案的行列数(如果需要更多行列,可以相应地增加这个值),`48`是图案间隔的像素数,`'last'`指定了生成的标定板图像显示在最后的窗口。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值