静态时序分析:SDC约束命令set_clock_latency详解

相关阅读

静态时序分析icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12567571.html?spm=1001.2014.3001.5482


        时钟的延迟可以使用set_clock_latency命令设置,这里的时钟延迟包括源延迟(source latency),即时钟对象到时钟源对象(时钟定义点)的延迟,又叫插入延迟(insertion delay);以及网络延迟(network latency),即时钟源到各触发器时钟引脚的延迟。正如上一篇文章中说的一样静态时序分析:SDC约束命令set_clock_transition详解-CSDN博客,因为时钟树尚未创建,时钟端口的高扇出会导致,任何在时钟路径上的转换时间和延迟的计算都是毫无意义的,网络延迟只是一种预布局阶段(pre-layout)的估计,但注意源延迟在时钟树综合完成后依然会存在。

        该指令的BNF范式(有关BNF范式,可以参考以往文章)为:

set_clock_latencydelay object_list [-rise] [-fall] [-min] [-max][-source] [-early] [-late] [-dynamic jitter][-clock clock_list]//注:该命令的object_list参数一定要放在delay参数后

延迟值

        delay参数指定了时钟延迟值,默认情况下是指网络延迟,当使用了-source选项后指的是源延迟。注意,这个值一般为正,如果为负会出现如下所示的警告。

Warning: Value for <delay> is negative. (UID-450)

对象列表

        object_list参数指定了延迟值的作用对象,对于网络延迟,它可以是时钟、端口和引脚;对于源延迟,它可以是时钟以及源对象(即定义了时钟的端口或引脚)。

        如果对象是时钟,则源延迟或网络延迟会直接被指定在时钟上;如果对象是端口,则所有经过该端口的时钟会被指定源延迟或网络延迟;如果对象是引脚,则所有经过该引脚的所有时钟会被指定源延迟或网络延迟。

        下面对上面的描述进行举例说明,以图1所示的电路为参考。

图1 一个简单的例子 

        下面的命令创建了两个时钟对象,其中一个时钟clk控制发射触发器,一个时钟CLK控制捕获触发器(有关发射、捕获触发器,可以看以往的文章静态时序分析:建立时间分析-CSDN博客)

create_clock -period 10 [get_port clk]
create_clock -period 20 [get_port CLK] 

        下面的命令给clk时钟设置了源延迟和网络延迟。

set_clock_latency 0.1 [get_clock clk]
set_clock_latency -source 0.2 [get_clock clk]

        可以使用report_clock -skew命令查看时钟(包括其他允许的对象)的延迟情况,如图2所示。 

图2 时钟延迟报告

        下面的命令继续在端口clk上设置了源延迟和网络延迟,注意这两条命令与之前的区别。

set_clock_latency 0.3 [get_port clk]
set_clock_latency -source 0.4 [get_port clk]

         延迟情况如图3所示,可以看到其中有两个clk对象的源延迟和网络延迟,这是因为其中一个clk指的是时钟对象,另一个clk指的是端口对象。

图3 时钟延迟报告

         使用report_timing命令给出时序分析报告,如图4所示。

图4 时序分析报告

        可以看出,源延迟和网络延迟被叠加后合称为clock network delay,并且使用的是clk端口的延迟0.4源延迟+0.3网络延迟而不是clk时钟的延迟0.2源延迟+0.1网络延迟,这是因为端口的延迟覆盖了时钟的延迟,也可以时钟延迟指定的优先级低于端口指定的延迟。

        另外,我们可以看出对于理想时钟,DC并不会直接计算其实际时钟路径上的延迟(如计算U1、U2的延迟),而是直接使用set_clock_latency指定。

指定沿

        -rise选项用于指定延迟值作用于上升沿、-fall选项用于指定延迟值作用于下降沿。如果这两个选项都没有指定,延迟同时作用于时钟的上升沿和下降沿(相当于它们同时指定)。

        下面的命令更改端口clk的上升沿网络延迟为0.5,保持其下降沿网络延迟为0.3,延迟情况如图5所示。

set_clock_latency 0.5 -rise [get_port clk]

图5 时钟延迟报告

        使用report_timing命令给出时序分析报告,如图6所示。

图6 时序分析报告

        可以看出,由于本例的触发器是上升沿触发,因此我们的设置起了作用,现在的clock network delay是0.4源延迟+0.5网络延迟。

最大/最小条件

        -max选项用于指定延迟值作用于最大条件(建立时间分析),-max选项用于指定延迟值作用于最小条件(保持时间分析)。如果这两个选项都没有指定,延迟同时作用于最大条件和最小条件(相当于它们同时指定)。

        下面的命令更改端口clk的上升沿最大网络延迟为0.6,上升沿最小网络延迟为0.7,延迟情况如图7所示。

set_clock_latency 0.6 -rise -max [get_port clk]
set_clock_latency 0.7 -rise -min [get_port clk]

图7 时钟延迟报告

        使用report_timing命令分别给出建立时间和保持时间的时序分析报告,如图8和图9所示。

图8 建立时间时序报告

 图9 保持时间时序报告

        可以看出,建立时间时序分析时,clock network delay是0.4源延迟+0.6网络延迟;而保持时间时序分析时,clock network delay是0.4源延迟+0.7网络延迟。

早/晚延迟

        -early选项只能用于指定源延迟(即只能搭配-source使用),用于指定最快(最小源延迟)的源路径; -late选项只能用于指定源延迟(即只能搭配-source使用),用于指定最满(最大源延迟)的源路径。在建立时间分析和保持时间分析中,会对发射时钟和捕获时钟的这点进行考虑,给出最差情况下的分析结果。如果这两个选项都没有指定,源延迟同时作用于最快情况和最慢情况(相当于它们同时指定)。为了与实际情况吻合,-early指定的源延迟应小于-late指定的源延迟。

        我们用下面的命令给端口CLK(即捕获时钟)设置一个最快源延迟0.1,一个最慢源延迟0.2,延迟情况如图10所示。

//注意-early和-late选项必须搭配-source使用
set_clock_latency -early -source 0.1 [get_port CLK]
set_clock_latency -late -source 0.2 [get_port CLK]

图10 时钟延迟报告

        使用report_timing命令分别给出建立时间和保持时间的时序分析报告,如图11和图12所示。 

图11 建立时间时序报告

图12 保持时间时序报告

        可以看到,在建立时间分析时,捕获时钟CLK使用了最小源延迟0.1;在保持时间分析时,捕获时钟CLK使用了最大源延迟0.2。这两者都是最坏的情况下的结果。发射时钟clk的不同延迟是因为上节中的-min/-max选项,注意要辨别这两者的差异。这点从时钟延迟报告中也可以看出,-min/-max、-early/-late、-rise/-fall这几组选项是可以任意搭配的。

        -source选项的作用,在前面已经进行过说明。-dynamic选项用于模拟时钟延迟的抖动,用得较少。

时钟列表选项

        时钟选项-clock用于指定一个列表,因为对象列表中可以有端口和引脚,会出现多个时钟从同一个端口或引脚经过。如果没有使用-clock选项指定,则命令对多个时钟生效;如果指定了-clock选项和时钟列表,则命令只对时钟列表中的时钟生效。

        在下面的例子中,我们使用命令在CLK端口又定义了一个时钟CLK1,并令端口CLK的源延迟为0.5,这会使得CLK1和CLK时钟在经过CLK端口时都受到影响,如图13、图14和图15所示。

create_clock -period 30 -add -name CLK1 [get_port CLK]
set_clock_latency -source 0.5 [get_port CLK]

图13 时钟延迟报告

 图14 捕获时钟为CLK的时序报告

图15 捕获时钟为CLK1的时序报告

        现在我们使用带-clock选项的命令,将CLK端口对CLK1的源延迟影响变成0.6,如图16、图17和图18所示。

set_clock_latency -source 0.6 [get_port CLK] -clock_list CLK1

图16 时钟延迟报告

图17 捕获时钟为CLK的时序报告

图18 捕获时钟为CLK1的时序报告 

        可以看到,端口CLK对CLK的源延迟影响依然是0.5,但对CLK1的源延迟影响已经变成了0.6。

移除属性

      使用remove_clock_latency可以移除时钟延迟属性,注意为了移除源延迟属性,需要加上-source选项。

其他

        -dynamic选项用于指定时钟延迟的抖动(jitter),这个选项不常使用,用于指定延迟中,不确定部分的延迟值,对于建立时间分析/保持时间分析,发射时钟/捕获时钟会有不同的情况,以使得最差情况的时序得到分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/259340.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——网络通信TCP通信常用的接口和tcp服务demo

文章目录 TCP通信所需要的套接字socket()bind()listen()acceptconnect() 封装TCP socket TCP通信所需要的套接字 socket() socket()函数主要作用是返回一个描述符&#xff0c;他的作用就是打开一个网络通讯端口&#xff0c;返回的这个描述符其实就可以理解为一个文件描述符&a…

抖音关键词搜索爬虫,抖音API数据接口,抖音商品详情数据采集

抖音商品API接口抖音关键词搜索抖音直播间小黄车抖店商品数据采集 除了微博&#xff0c;小红书&#xff0c;抖音也是一个巨大的流量池。 除了评论&#xff0c;其实关键词搜索视频是更为常见的一个需求&#xff0c;于是上周末抽空开发了下&#xff0c;完成了 mvp。

数据结构——lesson3单链表介绍及实现

目录 1.什么是链表&#xff1f; 2.链表的分类 &#xff08;1&#xff09;无头单向非循环链表&#xff1a; &#xff08;2&#xff09;带头双向循环链表&#xff1a; 3.单链表的实现 &#xff08;1&#xff09;单链表的定义 &#xff08;2&#xff09;动态创建节点 &#…

【数据结构】链表OJ面试题5《链表的深度拷贝》(题库+解析)

1.前言 前五题在这http://t.csdnimg.cn/UeggB 后三题在这http://t.csdnimg.cn/gbohQ 给定一个链表&#xff0c;判断链表中是否有环。http://t.csdnimg.cn/Rcdyc 给定一个链表&#xff0c;返回链表开始入环的第一个结点。 如果链表无环&#xff0c;则返回 NULLhttp://t.cs…

OpenCV识别人脸案例实战

使用级联函数 基本流程 函数介绍 在OpenCV中&#xff0c;人脸检测使用的是cv2.CascadeClassifier.detectMultiScale()函数&#xff0c;它可以检测出图片中所有的人脸。该函数由分类器对象调用&#xff0c;其语法格式为&#xff1a; objects cv2.CascadeClassifier.detectMul…

vue-进阶语法(四)

目录 v-model原理 v-model应用于组件 sync修饰符 ref 和 $refs&#xff08;重点&#xff09; $nextTick v-model原理 原理&#xff1a;v-model本质上是一个语法糖。例如应用在输入框上&#xff0c;就是 value属性 和 input事件 的合写。 作用&#xff1a;提供数据的双向…

[NSSRound#16 Basic]Web

1.RCE但是没有完全RCE 显示md5强比较&#xff0c;然后md5_3随便传 md5_1M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&md5_2M%C9h%FF%0E%E3%5C%20%95r%D4w…

ClickHouse--08--SQL DDL 操作

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 SQL DDL 操作1 创建库2 查看数据库3 删除库4 创建表5 查看表6 查看表的定义7 查看表的字段8 删除表9 修改表9.1 添加列9.2 删除列9.3 清空列9.4 给列修改注释9.5 修…

大数据01-导论

零、文章目录 大数据01-导论 1、数据与数据分析 **数据&#xff1a;是事实或观察的结果&#xff0c;是对客观事物的逻辑归纳&#xff0c;是用于表示客观事物的未经加工的原始素材。**数据可以是连续的值&#xff0c;比如声音、图像&#xff0c;称为模拟数据&#xff1b;也可…

【网络安全】什么样的人适合学?该怎么学?

有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题&#xff1a; 什么样的人适合学习网络安全&#xff1f;我适不适合学习网络安全&#xff1f; 当然&#xff0c;产生这样的疑惑并不奇怪&#xff0c;毕竟网络安全这个专业在2017年才调整为国家一级…

Web 扫描神器:WhatWeb 保姆级教程(附链接)

一、介绍 WhatWeb 是一款用于识别网站技术栈和特征的开源Web扫描工具。它可以自动分析网站的响应并识别出使用的Web框架、CMS、服务器、JavaScript库等技术组件。WhatWeb的目标是通过分析网站的内容&#xff0c;提供有关目标的技术信息&#xff0c;这对于安全测试、漏洞评估和…

Jetpack Compose 第 2 课:布局

点击查看&#xff1a;Jetpack Compose 教程 点击查看&#xff1a;Composetutorial 代码 简介 Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API&#xff0c;可以帮助您简化并加快 Android 界面开发。 在本教程中&a…

Quartz---基础

1.概述 Quartz是一个完全由Java编写的开源任务调度框架&#xff0c;通过触发器来设置作业定时运行规则&#xff0c;控制作业的运行时间。Quartz框架的主要核心组件包括调度器、触发器和作业。调度器作为作业的总指挥&#xff0c;触发器作为作业的操作者&#xff0c;而作业则为应…

前端常见的设计模式

说到设计模式&#xff0c;大家想到的就是六大原则&#xff0c;23种模式。这么多模式&#xff0c;并非都要记住&#xff0c;但作为前端开发&#xff0c;对于前端出现率高的设计模式还是有必要了解并掌握的&#xff0c;浅浅掌握9种模式后&#xff0c;整理了这份文章。 六大原则&…

【图像分割 2023 WACV】HiFormer

【图像分割 2023 WACV】HiFormer 论文题目&#xff1a;HiFormer: Hierarchical Multi-scale Representations Using Transformers for Medical Image Segmentation 中文题目&#xff1a;HiFormer:基于Transformer的分层多尺度表示医学图像分割 论文链接&#xff1a; 论文代码&a…

代码随想录算法训练营第三十四天|860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

860.柠檬水找零 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 细节&#xff1a; 1. 首先根据题意就是只有5.的成本&#xff0c;然后就开始找钱&#xff0c;找钱也是10.和5. 2. 直接根据10 和 5 进行变量定义&#xff0c;然后去循环…

Vue3+Vite+TS+Pinia+ElementPlus+Router+Axios创建项目

目录 初始项目组成1. 创建项目1.1 下载项目依赖1.2 项目自动启动1.3 src 别名设置vite.config.ts配置文件tsconfig.json配置若新创项目ts提示 1.4 运行测试 2. 清除默认样式2.1 样式清除代码下载2.2 src下创建公共样式文件夹style2.3 main.js中引入样式2.4 安装sass解析插件 2.…

数据分析(一) 理解数据

1. 描述性统计&#xff08;summary&#xff09; 对于一个新数据集&#xff0c;首先通过观察来熟悉它&#xff0c;可以打印数据相关信息来大致观察数据的常规特点&#xff0c;比如数据规模&#xff08;行数列数&#xff09;、数据类型、类别数量&#xff08;变量数目、取值范围…

剪辑视频衔接怎么操作 剪辑视频衔接过渡自然方法 剪辑视频教程新手入门 抖音剪辑短视频 会声会影视频制作教程

视频剪辑在现代社交媒体和数字媒体时代中变得越来越重要。它广泛应用于各种领域&#xff0c;包括电影制作、广告宣传、教育培训、社交媒体内容创作等。 一、剪辑视频衔接怎么操作 会声会影是一款功能强大、易于使用的视频编辑软件。接下来我们拿会声会影为例讲解剪辑视频如何…

这样讲话,可以减少95%的沟通问题

上一篇文章中&#xff0c;我们分享了沟通 3S 原则的第一点&#xff1a;简洁。 但是&#xff0c;仅仅有简洁&#xff0c;是不够的。简洁并不是我们沟通的目的&#xff0c;而只是方式。 沟通的目的是什么呢&#xff1f;是将信息高效地传达给对方&#xff0c;并在这过程中&#xf…