前情提要
前面两次分别和大家一起学习了SDC的整体框架组成和clock定义的一部分内容。(如果想要查看可以点击下方蓝色链接),从中可以看出,所有SDC构成中最基本的就是clock的定义,它作为所有SDC的基础,贯穿到几乎所有SDC指令当中。并且一再证明了,Clock正确定义的关键是,约束要符合design,这样才是工具认知跟design行为完全切合的根本条件。今天会继续跟大家一起探讨下clock定义中create_clock和create_generated_clock的不同点以及如果generate clock定义不合理会导致的一些基本问题,最后还会简单的跟大家学习下clock group的定义。
深入浅出SDC - 前序
深入浅出SDC - clock定义(上)
Clock Latency简介
要探讨今天的主题,首先需要跟大家一起学习下clock latency这个基本概念。Clock latency通俗意义上是指clock定义点到clock sink point(时序器件的clock Pin)之间的这段延迟时间。其分为两类,其中一类为,source latency,另外一类是network latency。
source latency :也称作insertion delay,通常是指clock source端到clock定义点之间的这段时间延迟;通常有两种情况,其一:clock 直接来自于芯片外部,如crystal clock,此时,source latency指的是芯片外部crystal出口到芯片PAD(假如clock定义在此处)之间的时间延迟;其二:clock 来自于芯片内部的PLL,此时,source latency指的是芯片内部PLL输出点到芯片内部某个第一个clock定义点之间的这段时间。
network latency:其指的是clock定义点到clock sink point之间的这段时间。
这两种latency是每一个clock的固有属性,当CTS完成之后,每一个clock如果是在propagation状态下,其source latency和network latency都是确定的。当然,在前期(PR之前或者CTS之前),通常情况下clock都处于ideal状态,为了能够模拟真实的情况,我们可以通过指令set_clock_latency去指定每个clock的source latency或者network latency,具体此指令的用法,我们这里不详细解释了,有兴趣,有需要的可以自己去查阅相关资料。