时序分析之Clock rise/fall edge边沿对选取解析

目录

一、前言

二、Clock edge的选取逻辑

2.1 设计工程

2.2 同频同相

2.3 同频不同相1

2.4 同频不同相2

2.5 倍频关系(Fclk1>Fclk2)

2.6 倍频关系(Fclk1)<>

2.7 倍频关系存在相移(Fclk1)<>

2.8 非倍频关系无相移(Fclk1)<>

2.9 非倍频关系有相移(Fclk1)<>

三、总结


一、前言

    在对时序报告进行详细查看时,将看到source clock path或destination clock path的第一段延时都是时钟的edge,并且同一段路径的setup和hold也是不一样的,如下图的红色框内容为setup的示例,关于它的值在时序分析中是如何确定的呢?下面将对此进行详细的解答。

 

二、Clock edge的选取逻辑

    首先,还是先看时序分析中setup、hold的定义。通常说setup、hold本质上是对同一个单元(时序单元,如触发器)上两个输入信号到达时间关系的检查,通常是检查数据信号/复位信号与时钟信号的到达先后关系。如果是数据信号与时钟信号,则是setup/hold分析,如果是复位信号与时钟信号,则是recovery/removal检查。

    在用户手册UG906中,setup是对两个时钟延时关系进行最悲观的边沿检查,对时钟的边沿检查默认是发起时钟和捕获时钟边沿间的最小的正delta。 hold检查是确保启动边沿发送数据后,不能够被前一个setup捕获沿捕获。在实际的路径分析中,除了时钟的时延,还需考虑数据传输的时延,就是在报告中看到的完整时序路径。

    上面解释了分析时如何选取发起时钟launch clock和捕获时钟capture clock的边沿,即setup为正的边沿差值,hold尽量为负的差值,下面将结合实际例子来说明,根据发起始终与捕获时钟的频率与相位关系进行分类。

2.1 设计工程

    工程很简单,就是最基础的时序路径,由两个触发器构成

module clk_edge(clk1,clk2,d,rst,out);
input clk1,clk2,d,rst;
output out;
reg ff1,out;

always@(posedge clk1,negedge rst)
    if(!rst)
        ff1<=0;
    else begin
        ff1<=d;
    end


always@(posedge clk2,negedge rst)
    if(!rst)
        out<=0;
    else begin
        out<=ff1;
    end
endmodule

2.2 同频同相

时钟约束,clk1,clk2都是周期为10ns,占空比50%,在0-5ns为高电平

create_clock -period 10.000 -name clk1 -waveform {0.000 5.000} -add [get_ports clk1]
create_clock -period 10.000 -name clk2 -waveform {0.000 5.000} -add [get_ports clk2]

因同频同相,每个周期内的相位关系都是确定的,在一个周期内分析即可,setup边沿的获取根据上述规则选取如下图,hold直接取0时刻的。

 

setup分析,requirement为10ns-0ns=10ns

 

hold分析,requirement为0ns-0ns=0ns

 

2.3 同频不同相1

时钟约束,clk1,clk2都是周期为10ns,相位不同,发起时钟clk1的相位大于clk2

create_clock -period 10.000 -name clk1 -waveform {2.000 7.000} -add [get_ports clk1]
create_clock -period 10.000 -name clk2 -waveform {0.000 5.000} -add [get_ports clk2]

边沿分析如下图,clk1的上升沿在2ns,即clk1和clk2的相位同,因clk1和clk2周期相同,从0ns开始,clk1的第一个上升沿处于clk2的两个上升沿之间。因此,以clk1为中心,寻找前后最靠近的边沿,如下图所示。

 

setup分析,根据边沿分析对可得,requirement为8ns

 

hold分析,根据边沿对关系,可得requirement为-2ns

 

2.4 同频不同相2

时钟约束,clk1,clk2都是周期为10ns,相位不同,发起时钟clk1的相位小于clk2

create_clock -period 10.000 -name clk1 -waveform {0.000 5.000} -add [get_ports clk1] create_clock -period 10.000 -name clk2 -waveform {2.000 7.000} -add [get_ports clk2]

边沿分析如下图,clk2的上升沿在2ns,即clk1和clk2的相位不同,因clk1和clk2周期相同,以clk2为中心,寻找前后最靠近的边沿,如下图所示。

 

setup分析,根据边沿分析对可得,requirement为2ns

 

hold分析,根据边沿分析对可得,requirement为-8ns

 

2.5 倍频关系(Fclk1>Fclk2)

时钟约束,clk1周期为10ns,clk2周期为30ns

create_clock -period 10.000 -name clk1 -waveform {0.000 5.000} -add [get_ports clk1]
create_clock -period 30.000 -name clk2 -waveform {0.000 15.000} -add [get_ports clk2]

边沿分析如下图,在0ns,即clk1和clk2的边沿对齐,因此进行hold分析。因clk2周期大,以clk2为的上升沿为中心,寻找前后最靠近的边沿,如下图所示。

 

setup分析,根据边沿分析对可得,requirement为30ns-20ns=10ns

 

hold分析,根据边沿分析对可得,requirement为0-0=0ns

 

2.6 倍频关系(Fclk1<Fclk2)

时钟约束,clk1周期为30ns,clk2周期为10ns

create_clock -period 30.000 -name clk1 -waveform {0.000 15.000} -add [get_ports clk1]
create_clock -period 10.000 -name clk2 -waveform {0.000 5.000} -add [get_ports clk2]

边沿分析如下图,在0ns,即clk1和clk2的边沿对齐,因此进行hold分析,因clk1周期大,以clk1的上升沿为基准,寻找clk2最靠近其上升沿的边沿,结果如下图所示。

 

setup分析,根据边沿分析对可得,requirement为10ns-0ns=10ns

 

hold分析,根据边沿分析对可得,requirement为0-0=0ns

 

2.7 倍频关系存在相移(Fclk1<Fclk2)

时钟约束同上一个例子,clk1周期为30ns,clk2周期为10ns,区别是clk2存在相移,上升沿在3ns位置

create_clock -period 30.000 -name clk1 -waveform {0.000 15.000} -add [get_ports clk1]
create_clock -period 10.000 -name clk2 -waveform {3.000 8.000} -add [get_ports clk2]

边沿分析如下图,因clk1周期大,以clk1的上升沿为基准,在一个周期内,寻找clk2最靠近其上升沿的边沿,结果如下图所示。

 

setup分析,根据边沿分析对可得,requirement为3ns-0ns=3ns

 

hold分析,根据边沿分析对可得,requirement为23-30=-7ns

 

2.8 非倍频关系无相移(Fclk1<Fclk2)

当两个时钟clk1和clk2非倍频关系时,如clk1周期为7.5ns,clk2周期为5ns

create_clock -period 7.500 -name clk1 -waveform {0.000 3.750} -add [get_ports clk1] create_clock -period 5.000 -name clk2 -waveform {0.000 2.500} -add [get_ports clk2]

边沿分析如下图,在0ns出上升沿对齐,进行hold分析,clk1的周期大,以clk1上升沿为基准在clk2寻找最小边沿差。

 

setup分析,根据边沿分析对可得,requirement为10ns-7.5ns=2.5ns

 

hold分析,根据边沿分析对可得,requirement为0-0=0ns

 

2.9 非倍频关系有相移(Fclk1<Fclk2)

当两个时钟clk1和clk2非倍频关系时,如clk1周期为7.5ns,clk2周期为5ns,clk2的上升沿位置在1ns处

create_clock -period 7.500 -name clk1 -waveform {0.000 3.750} -add [get_ports clk1] create_clock -period 5.000 -name clk2 -waveform {1.000 3.500} -add [get_ports clk2]

边沿分析如下图,clk1的周期大,以clk1上升沿为基准在clk2寻找最小边沿差,对于setup分析,在clk1首个上升沿对应的clk2的上升沿偏差最小,hold的寻找方式类似,结果如下图

 

setup分析,根据边沿分析对可得,requirement为1ns-0ns=1ns

 

hold分析,根据边沿分析对可得,requirement为6-7.5=-1.5ns

 

三、总结

    下面再次对时序分钟中边沿对的选取进行一句话总结:假设Tcapture,Tlaunch分别为捕获时钟,发起时钟上升沿位置的时刻,setup边沿对选取规则,当Tcapture>Tlaunch时Min(Tcapture-Tlaunch);hold边沿对选取,在上升沿的时间中,当Tcapture<=Tlaunch时满足MAX(Tcapture-Tlaunch)的边沿对,最大值为0ns

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

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

相关文章

在数字化转型中,中小企业如何打造数字化产品和服务?

引言&#xff1a;随着社会的发展和消费者行为的变化&#xff0c;市场对数字化产品和服务的需求日益增长。中小企业需要紧跟这一趋势&#xff0c;通过开发数字化产品和服务来满足消费者的新需求。云计算、大数据、人工智能等先进技术的出现&#xff0c;为中小企业提供了更多的机…

第5章_Modbus通讯协议

文章目录 5.1 学习Modbus的快速方法5.1.1 寄存器速记5.1.2 协议速记 5.2 初识Modbus5.2.1 背景5.2.2 什么是Modbus&#xff1f;1. Modbus简介2. Modbus特点3. Modbus常用术语4. Modbus事务处理 5.3 Modbus软件与使用5.3.1 Modbus软件简介5.3.2 Modbus Poll&#xff08;主站设备…

Pikachu靶场--Sql Inject

参考借鉴 pikachu靶场练习&#xff08;详细&#xff0c;完整&#xff0c;适合新手阅读&#xff09;-CSDN博客 数字型注入(post) 这种类型的SQL注入利用在用户输入处插入数值&#xff0c;而不是字符串。攻击者试图通过输入数字来修改SQL查询的逻辑&#xff0c;以执行恶意操作。…

C# OpenCvSharp 入门

摘要 C# OpenCvSharp 是一个基于OpenCV&#xff08;开源计算机视觉库&#xff09;的C#封装库&#xff0c;它提供了一组功能强大的工具和函数&#xff0c;用于图像处理、计算机视觉和计算机图形学等领域。通过使用OpenCvSharp库&#xff0c;您可以在C#应用程序中轻松地实现各种图…

5.6 0-1背包问题

#include<iostream> #include<string> #include<stdlib.h> #include<bits/stdc.h> using namespace std;int c;//背包容纳的重量 int n;//物品数量 int cw;//当前重量 int cv;//当前价值 int bestv;//当前最优价值 int x[100]; int bestx[100]; struct…

VMware每次打开网络设置都出现需要运行NetworkManager问题

每次打开都出现这个情况&#xff0c;是因为之前把NetworkManager服务服务关闭&#xff0c;重新输入命令&#xff1a; sudo systemctl start NetworkManager.service或者 sudo service network-manager restart 即可解决&#xff0c;但是每次开机重启都要打开就很麻烦&#xf…

无人机赋能工程测绘

勘察设计 业务挑战 采集效率低导致工程周期延长&#xff0c;难以满足及时交付的需求 外业工作量大&#xff0c;人员、时间、设备投入成本高 测绘成果单一&#xff0c;仅限于数字线划图&#xff0c;无法提供可视化模型 无人机优势 快速构建二三维模型&#xff0c;提供丰富…

Go 语言环境搭建

本篇文章为Go语言环境搭建及下载编译器后配置Git终端方法。 目录 安装GO语言SDK Window环境安装 下载 安装测试 安装编辑器 下载编译器 设置git终端方法 总结 安装GO语言SDK Window环境安装 网站 Go下载 - Go语言中文网 - Golang中文社区 还有 All releases - The…

PyTorch使用GPU进行Tensor及模型计算

文章目录 1. 计算设备&#xff1a;GPU/CPU2. Tensor的GPU计算3. 模型的GPU计算 对复杂的神经网络和大规模的数据来说&#xff0c;使用CPU来计算可能不够高效。这里&#xff0c;我们将介绍如何使用单块NVIDIA GPU来计算。 首先&#xff0c;需要确保已经安装好了PyTorch GPU版本…

系统运维面试总结(shell编程)

SYNDDOS攻击&#xff0c;需要判断这个访问是正常访问还是信包攻击&#xff0c;当前这个信包发起的访问数量是多少&#xff0c;例如看到30个信包同时再访问时设置监控报警。

使用LabVIEW报告生成工具包时报错97

问题详情&#xff1a; 在运行使用Excel/Word调用节点的程序时&#xff0c;收到错误97&#xff1a;LabVIEW&#xff1a;&#xff08;十六进制0x61&#xff09;输入中传递了一个空引用句柄或先前已删除的引用句柄。 当运行报告生成工具包中的一个示例程序时&#xff0c;收到错误…

什么是 人工智能(AI)与机器学习(ML)?

人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;和机器学习&#xff08;Machine Learning&#xff0c;ML&#xff09;是现代科技的核心概念&#xff0c;它们在不同领域中应用广泛。了解它们之间的关系及其工作原理对理解现代技术至关重要。本文将详细介…

Django 页面展示模型创建表的数据

1&#xff0c;添加视图函数 Test/app8/urls.py from django.shortcuts import render from .models import Userdef create_user(request):if request.method POST:username request.POST.get(username)email request.POST.get(email)# ... 获取其他字段的值# 创建用户实例…

什么是TOGAF架构框架的ADM方法?

ADM是架构开发方法&#xff08; Architecture Development Method&#xff09;&#xff0c;为开发企业架构所要执行的各个步骤以及它们质检的关系进行详细的定义&#xff0c;它是TOGAF规范中最为核心的内容。 ADM的具体步骤&#xff1a; 预备阶段&#xff08;Preliminary Phas…

C# Benchmark

创建控制台项目&#xff08;或修改现有项目的Main方法代码&#xff09;&#xff0c;Nget导入Benchmark0.13.12&#xff0c;创建测试类&#xff1a; public class StringBenchMark{int[] numbers;public StringBenchMark() {numbers Enumerable.Range(1, 20000).ToArray();}[Be…

【每日一练】python运算符

1. 算术运算符 编写一个Python程序&#xff0c;要求用户输入两个数&#xff0c;并执行以下运算&#xff1a;加法、减法、乘法、求余、除法、以及第一个数的第二个数次方。将结果打印出来。 a input("请输入第一个数&#xff1a;") b input("请输入第二个数&…

ffmpeg使用bmp编码器把bgr24编码为bmp图像

version #define LIBAVCODEC_VERSION_MAJOR 60 #define LIBAVCODEC_VERSION_MINOR 15 #define LIBAVCODEC_VERSION_MICRO 100 note 不使用AVOutputFormat code void CFfmpegOps::EncodeBGR24ToBMP(const char* infile, const char* width_str, const char* height_str…

Axure使用小技巧

Axure的小技巧 在这个数字化时代&#xff0c;用户体验设计已成为产品成功的关键。 Axure RP&#xff0c;作为一款强大的原型设计和规格文档工具&#xff0c;为设计师和产品经理提供了一个平台&#xff0c;让他们能够将创意转化为交互式的原型。 然而&#xff0c;Axure的强大…

【87 backtrader期权策略】基于50ETF期权的covered-call-strategy

前段时间有读者希望能够实现一个期权策略的模板,这段时间通过akshare下载了期权的数据,并进行了清洗,写了一个最简单的期权策略,供大家参考。 策略逻辑: 这是151 trading strategies中的一个期权策略。 买入50ETF基金,手续费按照万分之二计算,一直持有卖出一个最远期的…