首页 > 技术知识 > 正文

上文虚拟时钟Virtual clock(一)讲解了为什么要定义虚拟时钟、如何定义虚拟时钟,本文进一步补充说明。

在约束set_input_delay/set_output_delay时,可以指定真实时钟CLKP,也可以指定虚拟时钟vCLKP,并且创建与CLKP同频率的虚拟时钟vCLKP时,无需指定时钟端口,参考脚本如下:

set period 5create_clock –name CLKP –period $period [get_ports CLKP]create_clock –name vCLKP –period $period

在约束set_input_delay/set_output_delay时,是否使用虚拟时钟在CTS之前是没有区别的,可以认为都是理想时钟,毕竟clock tree还没实际建立,时序评估还不能使用propagated clock。而在CTS之后就有如下需要注意的地方:

1)如果指定的是真实时钟,那么下图中的Virtual flip-flop虚拟寄存器的时钟延迟就被忽略了,或者说该虚拟寄存器会被EDA工具认为是理想模型,不带clock propagated time。2)如果指定的是虚拟时钟,工具往往可以根据内部真实时钟的平均延迟来估算外部虚拟寄存器的时钟延迟,更加合理。虚拟时钟Virtual clock(二)-伪装手机虚拟时间

为了让顶层的时序更容易满足,一般会在IN2REG和REG2OUT过约束,可设置外部延迟为60%的时钟周期,给内部的数据路径留40%的空间。具体根据实际项目需求、计规格、工艺条件等决定。

另外,set_input_delay要指定-max和-min选项,分别对应setup和hold时序检查,如果只指定其中一个选项或都不指定,那么工具在检查setup和hold时,会使用相同的值。#参考值为0.6,根据实际情况调整set_input_delay [expr 0.6*$period] -clock vCLKP [get_ports CIN]

转载:全栈芯片工程师

猜你喜欢