STA环境 - 时钟

目录

  • 1. 指定时钟`create_clock`
    • 1.1. 时钟延迟`set_clock_latency `
    • 1.2. 时钟不确定度(时钟抖动)`set_clock_uncertainty `
    • 1.3. 时钟过渡时间`set_clock_transition `
  • 2. 衍生时钟`create_generated_clock`
  • 3. 划定时钟域`set_clock_groups`

STA环境配置中对时钟如何约束

XDC约束技巧之时钟篇


1. 指定时钟create_clock

时钟树: 时序电路中从时钟源到各触发器CK端时钟路径构成的结构。

芯片端口输入输出的主时钟、以及RXCLK/TXCLK等随路时钟都必须由用户使用create_clock自主创建,该时钟就是时序分析的起点。

配置的SDC如下

# 名称: SYSCLK
# 周期: 20ns
# 占空比: 20ns内上升沿时刻为0ns,下降沿时刻为5ns
# 端口: SCLK

create_clock -name SYSCLK -period 20 -waveform {0 5} [get_ports SCLK]

# 名称(默认端口名): CLKA
# 周期: 20ns
# 占空比(默认-waveform (0,period/2): 50%
# 端口: CLKA

create_clock -period 20 [get_ports CLKA]

1.1. 时钟延迟set_clock_latency

分为网络延迟和源延迟。

网络延迟(network latency): 表示芯片内部时钟定义点到第一级触发器CK端的时钟延迟,即input2reg。

源延迟(source latency): 表示芯片外部时钟源(比如晶振时钟、数据随路时钟)到时钟定义点的时钟延迟

如下图所示。

在这里插入图片描述
理论上这些时钟延迟都为0,可以在STA时使用set_clock_latency 指令指定时钟树综合前所有终点的时钟延迟估计值。一旦时钟树建立完毕,就会忽略该约束,并使用实际走线延迟替代。

一般指定网络延迟即可,SDC如下

# 时钟CLK_CONFIG的上升沿和下降沿时钟延迟均为0.8ns
set_clock_latency 0.8 [get_clocks CLK_CONFIG]

# 时钟MAIN_CLK的上升沿时钟延迟为1.8ns
set_clock_latency 1.8 -rise [get_clocks MAIN_CLK]

# 所有时钟定义的下降沿时钟延迟为2.1ns
set_clock_latency 2.1 -fall [all_clocks]

# 时钟SYS_CLK的上升沿和下降沿源时钟延迟均为1.9ns
set_clock_latency 1.9 -source [get_clocks SYS_CLK]

1.2. 时钟不确定度(时钟抖动)set_clock_uncertainty

从PLL出来的时钟信号周期存在一定程度的抖动。

当然理想情况下抖动为0,可以在STA时指令设定一个时间窗口,该窗口内任何时候都有可能产生时钟沿,这样的时间窗口就可以表示抖动量。

如下图

在这里插入图片描述

时钟抖动会提高对建立时间裕度和保持时间裕度要求,因此分为setup uncertainty 和 hold uncertainty。

如下图所示,effective clock period为根据时钟定义确立的预期时钟沿位置,setup uncertainty为早于预定时钟沿的的不确定度,hold uncertainty为晚于预定时钟沿的的不确定度

在这里插入图片描述

SDC指令如下

# 时钟CLK_CONFIG的setup uncertainty
set_clock_uncertainty -setup 0.2 [get_clocks CLK_CONFIG]

# 时钟CLK_CONFIG的hold uncertainty
set_clock_uncertainty -hold 0.05 [get_clocks CLK_CONFIG]

# 时钟SYS_CLK到CFG_CLK的跨时钟路径的hold uncertainty 为0.05ns
set_clock_uncertainty -from SYS_CLK -to CFG_CLK -hold 0.05

# 时钟SYS_CLK到CFG_CLK的跨时钟路径的setup uncertainty 为0.1ns
set_clock_uncertainty -from SYS_CLK -to CFG_CLK -setup 0.1

时钟偏斜(clock skew): 时钟信号从时钟源PLL到达不同终点的时间差。时钟延迟和时钟抖动导致了时钟偏斜。

1.3. 时钟过渡时间set_clock_transition

指时钟从阈值电压的起始点到终止点所需的时间。压摆率(Slew rate)是过渡时间的倒数。

指令如下

# 时钟CLK_CONFIG的上升沿过渡时间为0.1ns
set_clock_transition -rise 0.1 [get_clocks CLK_CONFIG]

# 时钟CLK_CONFIG的下降沿过渡时间为0.12ns
set_clock_transition -fall 0.12 [get_clocks CLK_CONFIG]

当然在实际仿真和分析中,经常直接使用如下图的理想波形进行时序分析,将电平转换时间近似成零。

在这里插入图片描述

2. 衍生时钟create_generated_clock

使用指定时钟(create_clock指令产生的时钟)经过MMCM/PLL/BUFR产生的时钟、或者是用户自行设计出来的时钟,需要约束衍生时钟create_generated_clock

4.1 Verilog 同步与异步
深度解析Create_clock与Create_generated_clock的区别

指令如下

# 名称: CLKP 
# 周期: 10ns
# 占空比: 50%
# 端口: UPLL0/CLKOUT
create_clock -name CLKP -period 10 [get_pins UPLL0/CLKOUT]

# 名称: CLKPDIV2
# 源时钟: UPPL0/CLKOUT
# 分频系数: 2
# 端口: UFF0/Q
create_generated_clock -name CLKPDIV2 -source [get_pins UPLL0/CLKOUT] -divide_by 2 [get_pins UFF0/Q]

如果衍生时钟有多个源,则需要指定哪个是源时钟。

3. 划定时钟域set_clock_groups

静态时序分析—set_clock_groups

可将多个时钟分成多个组,通常时钟组之间为异步的。

# CLKA和CLKB为同步时钟,且与CLKC异步
set_clock_groups -asynchronous -group {CLKA CLKB} -group {CLKC}

# CLKA和CLKB为同步时钟,且与CLKC以及CLKC的衍生时钟 异步
set_clock_groups -asynchronous -group {CLKA CLKB} -group {[get_clocks -include_generated_clocks CLKC]}

如果两个时钟无需进行STA,但两个时钟都来自同一根线,就需要进行逻辑隔离,如下图

在这里插入图片描述

# C1和C2为来自同一根线,但相互之间不需要STA
set_clock_groups -logically_exclusive -group C1 -group C2

如果两个时钟需要进行STA,但两个时钟都来自同一根线,就需要进行逻辑隔离,如下图

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【总结】爬虫4-selenium

爬虫4-selenium 1. selenium 基本操作 在使用selenium之前必须先配置浏览器对应版本的webdriver。才可以控制浏览器打开网页 1.1 创建浏览器对象 b Chrome()1.2 打开网页 (需要哪个网页数据,就打开那个网页对应的网页地址) b.get(https…

git 001--建本地仓库和远程仓库和拉代码

要使用Git对我们的代码进行管理,首先需要获得Git仓库。 获取Git仓库通常有两种方式: 在本地初始化Git仓库(不常用) 从远程仓库克隆(常用) 一.建本地仓库 方法一: 在自己电脑的任意目录下创建一个空目录…

字节测试总监,让我们用这份《测试用例规范》,再也没加班过

经常看到无论是刚入职场的新人,还是工作了一段时间的老人,都会对编写测试用例感到困扰?例如: 固然,编写一份好的测试用例需要:充分的需求分析能力 理论及经验加持,作为测试职场摸爬打滚的老人&…

为什么企业需要一个“企业办公浏览器”?

目前,大多数企业还在用着传统的Web浏览器,它是各行业企业办公最常用到的应用程序,搜索资料、打开其他应用工具、打开文档等等,企业员工几乎每天都在用它做这些工作。 但实际上,Web浏览器并不是一个企业专用的办公应用软…

炒黄金所需的k线图基础知识(上)

炒金,一般是指对杠杠式的黄金电子合约(如伦敦金、黄金期货)进行短线的多空操作,从中赚取波动价差的行为。无论投资者从事内盘还是外盘交易,K线图都是基础的、必备的知识。 1、什么叫K线图? K线图源于日本的…

计算机网络名词解释和简答题总结

名词解释 CSMA/CD(载波监听多点接入/碰撞检测协议) CSMA/CD是一种基于冲突检测的载波监听多路访问技术。CSMA/CD协议要求站点在发送数据之前先监听信道。如果信道空闲,站点就可以发送数据;如果信道忙,则站点不能发送…

使用CookieJar提取cookie信息

首先,推荐几个帖子,大伙可以先看看。国内通过cookiejar主要获取cookie的方法,大致都是如此的。 http.cookiejar库之CookieJar_pigYanYan的博客-CSDN博客 Python编程:cookiejar的使用_彭世瑜的博客-CSDN博客 再推荐一个资料帖&a…

Linux权限

Linux下有两种用户:超级用户(root)、普通用户。超级用户(root):可以在linux系统下做任何事,不受限制,只有1个。普通用户:在linux系统下做有限的事,有N个。超级用户的提示符#;普通用户的提示符$切换用户的命令:su切换root时可以直接…

MQ之kafka

一 概念 Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需…

Visual Studio Code2023(VSCode2023)安装包下载及安装教程(最新版接入了chat GPT)

[软件名称]: Visual Studio Code2023 [软件大小]: 88.6 MB [安装环境]: Win11/Win10/Win7 [软件安装包下载]:https://pan.quark.cn/s/ee94a4aa2abc Visual Studio Code简称“VS Code”是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Lin…

【Datawhale动手学深度学习笔记】多层感知机代码实践

多层感知机 激活函数 激活函数(activation function)通过计算加权和并加上偏置来确定神经元是否应该被激活, 它们将输入信号转换为输出的可微运算。 大多数激活函数都是非线性的。 由于激活函数是深度学习的基础,下面简要介绍一…

多线程进阶学习09------ThreadLocal详解

ThreadLocal:提供线程的局部变量,对于线程共享变量如果使用ThreadLocal则无需加锁,更省事省心。 ThreadLocal本地线程变量,线程自带的变量副本(实现了每一个线程副本都有一个专属的本地变量,主要解决的就是让每一个线程绑定自己的值,自己用自…

FastReport .NET 2023.2.4 Crack

FastReport .NET Reporting and documents creation library for .NET 7 FastReport .NET适用于 .NET 7、.NET Core、Blazor、ASP.NET、MVC 和 Windows Forms 的全功能报告库。它可以在微软视觉工作室 2022 和 JetBrains Rider 中使用。 利用 .NET 7、.NET Core、Blazor、ASP.N…

React:九、组件的生命周期

1.生命周期的理解 组件从创建到死亡它会经历一些特定的阶段。React组件中包含一系列勾子函数(生命周期回调函数), 会在特定的时刻调用。我们在定义组件时&#xff0c;会在特定的生命周期回调函数中&#xff0c;做特定的工作。2.生命周期小案例 <!DOCTYPE html> <html…

操作系统权限维持(十五)之Linux系统-inetd远程后门

系列文章 操作系统权限维持&#xff08;一&#xff09;之Windows系统-粘贴键后门 操作系统权限维持&#xff08;二&#xff09;之Windows系统-克隆账号维持后门 操作系统权限维持&#xff08;三&#xff09;之Windows系统-启动项维持后门 操作系统权限维持&#xff08;四&…

leaflet加载GPX文件,第2种图形显示方法(119)

第119个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中加载GPX文件,将图形显示在地图上,这是另外一种方式,看前一种方式请从目录中查找。GPX文件是以GPS数据交换格式保存的GPS数据文件,是一种通用的地图信息文件,可以被众多GPS应用和Web服务更轻松地导入和…

Jenksin pipeline: 全局变量 和 input中的局部变量

在jenkins的流水线中全局变量的定义基本有两种实现方法&#xff1a;参数化构建过程中定义&#xff0c;流水线中直接定义 参数化构建过程中定义 流水线中直接定义(Jenkins 2.x支持代码及即服务) 可以用流水线生成 在配置parameters后&#xff0c;往往需要先构建一遍&#…

耗时 24 小时整理了网络安全学习路线,非常详细!

前言上次发的文章【都2023年了&#xff0c;还在问网络安全怎么入门】很多小伙伴在评论区回复不知道怎么学习&#xff0c;我也反思了一下&#xff0c;确实没写到学习方法和路线&#xff0c;所以这一期就出一一个怎么学习网络安全的学习路线和方法&#xff0c;觉得有用的话三连收…

软件测试入门简单么?入行后如何做职业规划

软件测试的确是入门相对简单的一个学科&#xff0c;他们不常写代码&#xff0c;主要去检查代码&#xff0c;是不是出现了漏洞、程序是否能运行下去&#xff1f;那这部分程序员就是做软件测试。 这个类别没有做Java难没有大数据那么复杂&#xff0c;但还可以拿到程序员的高薪。…

一招解决macOS12 CleanMyMac闪退

距全新的macOS 12 Monterey正式版发布已经过去了快6个月&#xff0c;macOS Monterey 12 新增了同播共享功能、 Apple Music 声控方案、“数字遗产”计划、“照片”中重新设计的“回忆”&#xff0c;以及针对 Mac 的其他功能和错误修复等大量更新和改进。 很多Mac用户也已经升级…