Virtual Clock

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Virtual Clock相关的知识,希望对你有一定的参考价值。

参考技术A Virtual Clock

1. What is virtual clock

Virtual Clock: 没有定义时钟源的时钟 Real Clock: 定义了时钟源的时钟。

Virtual clock与real clock的区别就在于是否有source,real clock有实实在在的source pin/port,沿着source可以trace到clock sink,可以对real clock做CTS;而virtual clock不行。

定义Real/Virtual clock cmd 如下:

## real clock, with source pin/port

create_clock -name "CLK" -period 10 -waveform [0 5] [get_ports clk]

## virtual clock

create_clock -name "VirCLK" -period 10 -waveform [0 5]

2. Purpose of Virtual Clock

简单地说,Virtual clock就是用来帮助我们约束IO的。一图胜千言,请看下面的示意图(ps:安利online画电路图网站 schemeit ):

对于TOP,4个FF源于同一个clk,它们都是同步的,所以FF1->FF2,FF3->FF4这两条跨block的path都需要检查timing;而对于BLOCK,这两条path是看不见的,它只能看到A->FF2 和 FF3->B的path,即block内部看到的path比真实path要短。

这样就需要对input port A 设input delay约束,delay value为从FF1/CP到A的delay;对output port B 设output delay约束,delay value为从B到FF4/D的delay。

这样一来,data path上就能正确反映实际full path了,那么clock path呢?

对于FF1/CP–>FF2/D这条full path,在BLOCK内部,capture pin FF2/CP的latency可以通过clk source latency + clk network latency来得到,source latency是外部CLK source到BLOCK CLK port的delay,可以用set_clock_latency约束;network latency是从CLK port 到FF2/CP的latency,这部分就是CTS后clock tree的长度。

但是FF1/CP在BLOCK外部,无法获得其launch latency,如果不加约束,CTS后,由于launch和capture之间的skew,timing很难meet(in2reg hold,reg2out setup)。

那么如何约束FF1/CP或者FF4/CP的clk latency呢?

这就是virtual clock的真正用意,定义virtual clk,然后通过反标virtual clk的source latency来约束FF1/CP或FF4/CP的clk latency。

到这里我们就会发现,其实FF1/CP->FF2/D这条同一个clk约束的full path,其实被分成了vir clk和clk两个同步clk的跨clock domain之间的约束了。

原文链接:https://ileonsun.github.io/virtual-clock/

startTime = time.clock()AttributeError: module ‘time‘ has no attribute ‘clock

startTime = time.clock()AttributeError: module ‘time‘ has no attribute ‘clock

python 报错!

AttributeError module ‘time‘ has no attribute ‘clock‘

python3.8不支持clock了,替换成time.perf_counter()替换就可以了

?

?

文章来源:刘俊涛的博客 欢迎关注公众号、留言、评论,一起学习。

?

若有帮助到您,欢迎点击推荐,您的支持是对我坚持最好的肯定(*^_^*)

以上是关于Virtual Clock的主要内容,如果未能解决你的问题,请参考以下文章

virtual和abstract

考虑virtual函数以外的选择

在虚拟继承中应该写“public virtual”还是“virtual public”?

base class类virtual析构函数

使用 md-virtual-repeat 和 md-virtual-repeat-container 的可折叠组头

virtual和abstract