多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
今天要介绍的时序分析基本概念是**Latency**, 时钟传播延迟。主要指从Clock源到时序组件Clock输入端的延迟时间。它可以分为两个部分:**时钟源插入延迟**(source latency)和**时钟网络延迟**(network latency) **source latency**:也被称为insertion delay。主要指从clock source端到clock定义端的延迟,即是时钟源(例如PLL)到当前芯片时钟根节点(clock root pin)之间的延迟。 **network latency**:主要指从clock定义端到时序器件的clock pin端的延迟。 以下两张图分别定义了片上(on chip)和片外(off chip)中clock latency的描述。 ![](https://img.kancloud.cn/81/48/8148491d177f0f8e8450a941608adbe3_586x561.png) 我们可以用如下命令来定义描述clock latency: **#specify source latency** set\_clock\_latency 1.9 -source \[get\_clocks SYS\_CLK\] **#specify network latency** set\_clock\_latency 0.8 \[get\_clocks CLK\_CONFIG\] 那latency值有什么用呢?其实这相当于一个target值,CTS的engine会根据你设置的latency值来插入buffer(当然只是对network latency操作),做出一个接近于你设定的值,可能多一点,也可能少一点。 latency值的大小直接影响着clock skew的计算和固定。因为我们的时钟树是以平衡为目的,假设你对一个root和sink设置了1ns的latency值,那么对另外的几个sink来说,就算你没有给定latency值,CTS为了得到较小的skew,也会将另外的几个sink做成1ns的latency。过大的latency值会受到OCV和PVT等因素的影响较大。而当我们生长好了clock tree以后,latency的设定也就不起作用了。