静态时序分析:ideal_clock、propagated_clock以及generated_clock的关系及其延迟计算规则(二)

news2024/11/19 20:45:39

相关阅读

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


生成时钟

        上一节中,我们讨论了理想时钟和传播时钟的创建和使用,本节将讨论生成时钟及其与理想时钟和传播时钟的关系。

        图1所示的是一个简单的例子,两个级联的D触发器使用一个分频时钟作为它们的时钟。

图1 简单的例子

        下面使用create_clock命令在输入端口clk处创建一个理想时钟,图2是此时的建立时间时序报告。

create_clock -period 10 [get_clock clk]

图2 建立时间时序报告

        可以看出此时显示时序路径尚未约束,这是因为输入端口clk处的时钟,无法从一个分频D触发器的时钟端,传播至其输出端。这种情况下,需要在分频D触发器的输出端定义一个生成时钟(当然直接定义一个时钟也可以,但这是有缺陷的)。

        下面使用create_generated_clock命令创建一个二分频的生成时钟,指定的源引脚应该是主时钟的一个扇出引脚,此处指定为分频D触发器的时钟端;指定的源对象为分频D触发器的输出端。图3是此时的时钟报告。

create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2

 图3 时钟报告

        此时的建立时间时序报告如图4所示,可以看到这里已经成功用二分频时钟进行约束了。

图4 建立时钟时序报告

        需要注意的是,使用create_generated_clock命令创建的生成时钟和使用create_clock命令创建的时钟一样,也是一个理想时钟,它拥有自己独立的源延迟和网络延迟,它们都是使用set_clock_latency命令进行设置的。

        可以使用set_propagated_clock命令,将一个理想的生成时钟转化为一个传播的生成时钟。 

考虑三者之间的组合

        在已经了解三种时钟后,下面考虑这三者之间的组合,组合情况详见下表。

主时钟生成时钟生成时钟是否指定源延迟总延迟(不包含在其中的延迟都会被忽略)
理想理想生成时钟网络延迟(如有指定)
理想理想生成时钟源延迟+生成时钟网络延迟(如有指定)
理想传播生成时钟网络延迟(真实)
理想传播生成时钟源延迟+生成时钟网络延迟(真实)
传播理想主时钟源延迟(如有指定)+主时钟网络延迟(真实,由主时钟源对象到生成时钟源对象的时钟路径计算得出)+生成时钟网络延迟(如有指定)
传播理想生成时钟源延迟+生成时钟网络延迟(如有指定)
传播传播主时钟源延迟(如有指定)+主时钟网络延迟(真实,由主时钟源对象到生成时钟源引脚的时钟路径计算得出)+生成时钟网络延迟(真实)
传播传播生成时钟源延迟+生成时钟网络延迟(真实)

        下面将对以上情况分别举例说明,以图1为例,且各自独立。

理想主时钟+理想生成时钟+生成时钟不指定源延迟

        使用以下命令进行约束,此时的时钟报告如图5所示,建立时间时序报告如图6所示。

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_clock_latency 0.5 [get_clock clk_div2]

图5 时钟报告

图6 建立时间时序报告

理想主时钟+理想生成时钟+生成时钟指定源延迟

        使用以下命令进行约束,此时的时钟报告如图7所示,建立时间时序报告如图8所示。 

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_clock_latency 0.5 [get_clock clk_div2]
set_clock_latency -source 1 [get_clock clk_div2]

图7 时钟报告

图8 建立时间时序报告

理想主时钟+传播生成时钟+生成时钟不指定源延迟

        使用以下命令进行约束(注意,为了引入线延迟,使用了非理想的线负载模型),此时的时钟报告如图9所示,建立时间时序报告如图10所示,此处使用了-path full_clock选项和-significant_digits 7选项,便于观察细节,可以看出总延迟为从div_clk_reg/Q引脚到q1_reg_reg/CK引脚的线延迟0.0000015ns。  

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_propagated_clock [get_clock clk_div2]
set_wire_load_model -name tsmc13_wl50 -library typical

图9 时钟报告

图10 建立时间时序报告

 

理想主时钟+传播生成时钟+生成时钟指定源延迟

        使用以下命令进行约束(注意,为了引入线延迟,使用了非理想的线负载模型),此时的时钟报告如图11所示,建立时间时序报告如图12所示,此处使用了-path full_clock选项和-significant_digits 7选项,便于观察细节,可以看出总延迟为从div_clk_reg/Q引脚到q1_reg_reg/CK引脚的线延迟0.0000014ns(与上例不同是因为四舍五入)加上生成时钟指定源延迟1ns(被统计在生成时钟的clock source latency中)。   

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_propagated_clock [get_clock clk_div2]
set_clock_latency -source 1 [get_clock clk_div2]
set_wire_load_model -name tsmc13_wl50 -library typical

图11 时钟报告

图12 建立时间时序报告

传播主时钟+理想生成时钟+生成时钟不指定源延迟

        使用以下命令进行约束(注意,为了引入线延迟,使用了非理想的线负载模型),此时的时钟报告如图13所示,建立时间时序报告如图14所示,此处使用了-significant_digits 7选项,便于观察细节,可以看出总延迟为主时钟源延迟1ns加上从输入端口clk到div_clk_reg/D引脚的线延迟0.0000014ns加上从div_clk_reg/D引脚到div_clk_reg/D引脚的单元延迟0.7710956ns加上生成时钟指定网络延迟0.5ns,总计2.2710972ns。    

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_propagated_clock [get_clock clk]
set_clock_latency 0.5 [get_clock clk_div2]
set_clock_latency -source 1 [get_clock clk]
set_wire_load_model -name tsmc13_wl50 -library typical

图13 时钟报告

图14 建立时间时序报告

传播主时钟+理想生成时钟+生成时钟指定源延迟

        使用以下命令进行约束,此时的时钟报告如图15所示,建立时间时序报告如图16所示,此处使用了-significant_digits 7选项,便于观察细节,可以看出总延迟为生成时钟源延迟0.3ns加上生成时钟网络延迟0.5ns,总计0.8ns。 

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_propagated_clock [get_clock clk]
set_clock_latency 0.5 [get_clock clk_div2]
set_clock_latency -source 0.3 [get_clock clk_div2]

图15 时钟报告

图16 建立时间时序报告

传播主时钟+传播生成时钟+生成时钟不指定源延迟

        使用以下命令进行约束(注意,为了引入线延迟,使用了非理想的线负载模型),此时的时钟报告如图17所示,建立时间时序报告如图18所示,此处使用了-path full_clock选项和-significant_digits 7选项,便于观察细节,可以看出总延迟为主时钟源延迟1ns加上从输入端口clk到div_clk_reg/D引脚的线延迟0.0000014ns加上从div_clk_reg/D引脚到div_clk_reg/D引脚的单元延迟0.7710956ns(前面这些延迟被统计在生成时钟的clock source latency中),加上从div_clk_reg/D引脚到q1_reg_reg/CK引脚的0.0000014ns,总计1.7710984ns。

create_clock -period 10 [get_port clk]
create_generated_clock -divide_by 2 [get_pin div_clk_reg/Q] -source [get_pin div_clk_reg/CK] -name clk_div2
set_propagated_clock [get_clock clk]
set_propagated_clock [get_clock clk_div2]
set_clock_latency -source 1 [get_clock clk]
set_wire_load_model -name tsmc13_wl50 -library typical

图17 时钟报告

图18 建立时间时序报告

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java环境变量的设置

JAVA环境变量的设置 1.设置环境变量的作用2.如何设置环境变量2.1 找到系统的环境变量2.2 设置环境变量 1.设置环境变量的作用 说明:在Java中设置环境变量主要是为了能够让Java运行时能够找到Java开发工具包(JDK)的安装位置以及相关的库文件。…

JavaSE阶段面试题(一)

目录 1.int a 1, int b 1, Integer c 1, Integer d 1;四个区别和联系,以及c和d是同一个吗? 2.为什么重写HashCode必须重写euqals,两者之间的关系? 3.创建对象的方式有哪些 4.重写和重载的区别 5.抽象类和接口…

Webpack: Dependency Graph 管理模块间依赖

概述 Dependency Graph 概念来自官网 Dependency Graph | webpack 一文,原文解释: Any time one file depends on another, webpack treats this as a dependency. This allows webpack to take non-code assets, such as images or web fonts, and als…

算法day1 两数之和 两数相加 冒泡排序 快速排序

两数之和 最简单的思维方式肯定是去凑两个数,两个数的和是目标值就ok。这里两遍for循环解决。 两数相加 敲了一晚上哈哈,结果超过int范围捏,难受捏。 public class Test2 {public static void main(String[] args) { // ListNode l1 …

像学Excel 一样学 Pandas系列-创建数据分析维度

嗨,小伙伴们。又到喜闻乐见的Python 数据分析王牌库 Pandas 的学习时间。按照数据分析处理过程,这次轮到了新增维度的部分了。 老样子,我们先来回忆一下,一个完整数据分析的过程,包含哪些部分内容。 其中&#xff0c…

四十篇:内存巨擘对决:Redis与Memcached的深度剖析与多维对比

内存巨擘对决:Redis与Memcached的深度剖析与多维对比 1. 引言 在现代的系统架构中,内存数据库已经成为了信息处理的核心技术之一。这类数据库系统的高效性主要来源于其对数据的即时访问能力,这是因为数据直接存储在RAM中,而非传统…

二叉树的前中后序遍历(递归法、迭代法)leetcode144、94/145

leetcode144、二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3] 示例 2: 输入:root [] 输出:[] 示例 3: 输…

前端入门超级攻略:你的第一步学习指南

如果您觉得这篇文章有帮助的话!给个点赞和评论支持下吧,感谢~ 作者:前端小王hs 阿里云社区博客专家/清华大学出版社签约作者/csdn百万访问前端博主/B站千粉前端up主/知名前端开发者/网络工程师 前言 由于前端技术的快速迭代性,国…

解决ps暂存盘已满的问题

点击编辑->首选项->暂存盘 ps默认暂存盘使用的是c盘,我们改成d盘即可 然后重启ps

STM32之五:TIM定时器(2-通用定时器)

目录 通用定时器(TIM2~5)框图 1、 输入时钟源选择 2、 时基单元 3 、输入捕获:(IC—Input Capture) 3.1 输入捕获通道框图(TI1为例) 3.1.1 滤波器: 3.1.2 边沿检测器&#xf…

移动智能终端数据安全管理方案

随着信息技术的飞速发展,移动设备已成为企业日常运营不可或缺的工具。特别是随着智能手机和平板电脑等移动设备的普及,这些设备存储了大量的个人和敏感数据,如银行信息、电子邮件等。员工通过智能手机和平板电脑访问企业资源,提高…

【等保2.0是什么意思?等保2.0的基本要求有哪些? 】

一、等保2.0是什么意思? 等保2.0又称“网络安全等级保护2.0”体系,它是国家的一项基本国策和基本制度。在1.0版本的基础上,等级保护标准以主动防御为重点,由被动防守转向安全可信,动态感知,以及事前、事中…

SSM玉林师范学院宿舍管理系统-计算机毕业设计源码19633

摘要 随着大学生人数的增加,宿舍管理成为高校管理中的重要问题。本论文旨在研究玉林师范学院宿舍管理系统,探讨其优势和不足,并提出改进建议。通过对相关文献的综述和实地调研,我们发现该系统在宿舍分配、卫生评分、失物招领、设施…

什么是 URL ?

统一资源定位符(URL)是一个字符串,它指定了一个资源在互联网上的位置以及如何访问它。URL 是由几部分组成的,每部分都有其特定的作用: 协议/方案:这是 URL 的开头部分,表明了用于访问资源的协议…

基于uniapp(vue3)H5附件上传组件,可限制文件大小

代码&#xff1a; <template><view class"upload-file"><text>最多上传5份附件&#xff0c;需小于50M</text><view class"" click"selectFile">上传</view></view><view class"list" v…

WPF自定义模板--TreeView 实现菜单连接线

有些小伙伴说&#xff0c;在TreeView中&#xff0c;怎么每一个都加上连接线&#xff0c;进行显示连接。 代码和效果如下&#xff1a; 其实就是在原来的模板中增加一列显示线条&#xff0c;然后绘制即可 <Window x:Class"XH.TemplateLesson.TreeViewWindow"xmln…

无法定位程序输入点Z9 qt assertPKcS0i于动态链接库F:\code\projects\06_algorithm\main.exe

解决方法&#xff1a; 这个报错&#xff0c;是因为程序在运行时没要找到所需的dll库&#xff0c;如果把这个程序方法中对应库的目录下执行&#xff0c;则可正常执行。即使将图中mingw_64\bin 环境变量上移到msvc2022_64\bin 之前也不可以。 最终的解决方法是在makefile中设置环…

vue组件深入介绍之插槽

了解插槽之前请先了解vue组件基础及注册 Vue2官网介绍 Vue3官网介绍 1、vue2插槽介绍 在2.6.0中&#xff0c;具名插槽和作用域插槽引入了一个新的统一语法&#xff08;v-slot指令&#xff09;。它将取代slot和slot-scope&#xff1b; Vue 实现了一套内容分发的 API&#xf…

等保2.0 实施方案之信息软件验证要求

一、等保2.0背景及意义 随着信息技术的快速发展和网络安全威胁的不断演变&#xff0c;网络安全已成为国家安全、社会稳定和经济发展的重要保障。等保2.0&#xff08;即《信息安全技术 网络安全等级保护基本要求》2.0版本&#xff09;作为网络安全等级保护制度的最新标准&#x…

Revit 专业实用的BIM模型设计软件下载安装,Revit 最新版下载安装

Revit&#xff0c;该软件是专门为建筑信息模型&#xff08;BIM&#xff09;量身打造的&#xff0c;不仅极大提升了建筑设计师的工作效率&#xff0c;更为他们创造了一个更加精确、高效的设计环境。 在Revit的助力下&#xff0c;建筑设计师们能够轻松地进行建筑建模&#xff0c…