【Xilinx Vivado时序分析/约束系列7】FPGA开发时序分析/约束-FPGA单沿采样数据input delay时序约束实操

2023-11-13

目录

问题引入

分析问题

实际工程解决

新建工程

顶层代码

编辑时序约束

生成时序报告

设置输入延迟

具体分析

Data Path:表示数据实际到达的时间

Destination Clock Path:目的时钟路径

往期系列博客


 

根据第六节的内容,本篇文章以实操讲解。

 

本次以实际工程进行(Vivado)

问题引入

FPGA管脚处时钟上升沿到达之后3ns是数据到达时间,时钟周期为10ns,如何约束input delay和察看时序报告?

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

分析问题

从上面的时序图结合题目可以知道,因为FPGA管脚处时钟上升沿到达之后3ns是数据到达时间,则会就说明不存在Lrmin和Lrmax,也就是不考虑PCB布线长短的问题,在FPGA clock in的上升沿到来之后的3ns,FPGA data in数据拉高到来。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

实际工程解决

新建工程

基本内容和之前分析建立时间保持时间差不多,只不过在顶层文件代码中多了几路时钟、使能信号、数据等,并在最后打了两拍。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_13,color_FFFFFF,t_70,g_se,x_16

顶层代码

module top_ioddr(
input wire        rx_clk,
    input wire        rx_ctrl,
    input wire    [3:0] rx_dat,
  //tx
    output  wire    tx_clk,
    output  wire [3:0]  tx_d,
    output  wire    tx_dv,
    input	wire 	sdrclk,
    input	wire 	[3:0]	sdrdata,
    input	wire 	sdrden,
    output	reg 	tout 	
	);

wire rst;
wire rx_clk_90;
wire rx_en;
wire [7:0] rx_data;

reg tx_en1,tx_en2;
reg [7:0] tx_data1,tx_data2;
assign rst =0;
assign rx_clk_90 = rx_clk;
/*
 clk_wiz_0 clk_gen0
   (
    // Clock out ports
    .clk_out1(rx_clk_90),     // output clk_out1
   // Clock in ports
    .clk_in1(rx_clk));      // input clk_in1

*/
always @(posedge rx_clk_90 or posedge rst) begin
	if (rst == 1'b1) begin
		tx_data1 <= 'd0;
	end
	else if (rx_en == 1'b1) begin
		tx_data1 <= rx_data+ rx_data -1;
	end
end

always @(posedge rx_clk_90 or posedge rst) begin
	if (rst == 1'b1) begin
		tx_data2 <= 'd0;
	end
	else if (tx_en1 == 1'b1) begin
		tx_data2 <= tx_data1+ tx_data1 -5;
	end
end

always @(posedge rx_clk_90 ) begin
	tx_en1 <= rx_en;
end

always @(posedge rx_clk_90 ) begin
	tx_en2 <= tx_en1;
end

	iddr_ctrl inst_iddr_ctrl
		(
			.rx_clk_90 (rx_clk_90),
			.rst       (rst),
			.rx_dat    (rx_dat),
			.rx_ctrl   (rx_ctrl),
			.rx_en     (rx_en),
			.rx_data   (rx_data)
		);

	oddr_ctrl inst_oddr_ctrl
		(
			.sclk    (rx_clk_90),
			.tx_dat  (tx_data2),
			.tx_en   (tx_en2),
			.tx_c    (rx_clk_90),
			.tx_data (tx_d),
			.tx_dv   (tx_dv),
			.tx_clk  (tx_clk)
		);



//sdr clock domain 

reg [3:0] sdrdata_r1,sdrdata_r2;
reg 	sdrden_r1,sdrden_r2;
//打两拍 

always @(posedge sdrclk ) begin
	{sdrdata_r2,sdrdata_r1} <= {sdrdata_r1,sdrdata};
end

always @(posedge sdrclk ) begin
	{sdrden_r2,sdrden_r1} <= {sdrden_r1,sdrden};
end

always @(posedge sdrclk) begin
	if(sdrden_r2 == 1'b1) begin
		tout <= (&sdrdata_r1)|(&sdrdata_r2);
	end
	else begin
		tout <= (^sdrdata_r2);
	end
end

endmodule

和之前的操作类似,生成比特流文件,然后打开布线设计。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_16,color_FFFFFF,t_70,g_se,x_16

编辑时序约束

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_12,color_FFFFFF,t_70,g_se,x_16

这里大部分的操作和之前建立时间和保持时间约束的操作差不多,这里不多阐述

输入的sdrclk约束设置如下图,根据题目条件周期为10ns,设置约束时钟名字和所对应的时钟保持一致,也可以自己设置,并且让他对应sdrclk。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

生成时序报告

点击report timing,进行添加四个输出数据以及使能信号

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

设置输入延迟

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

按照题目要求,分别设置最大输入延时和最小输入延时,根据题目意思,最大和最小是一致的,都是3ns

延时值相对于时钟沿:rise 上升沿(和时序图保持一致)

延时值已经包含特定的时钟延时:none 无

设置为上升沿延时

此设置为最大延时量(另一个设置为最小延时量)

注:add delay information to the existing delay(no overwrite)添加延时信息到现有的延时中(不覆盖)

这个指的是如果你第一次设置为上升沿延时,第二次设置为下降沿延时,如果要想第二次的延时不对第一次的设置覆盖,这时候就需要勾选,如果只是改变延时量,这个是互不影响的,这个情况是不需要勾选的。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

由于更改了输入延时,所以需要重新report timing

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_17,color_FFFFFF,t_70,g_se,x_16

可以看到原来没有添加输入延时的时候,每条路径的slack(建立时间余量)都是无穷大,这是因为我们设置约束的时候,洗头膏默认帮我们设置的很大,避免报错。

在添加约束后,就可以看到slack不再是无穷大,而是有了一定的限制值。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

 

具体分析

随意双击点开一条路径进行分析(以path 6为例)

Summary:汇总了一些信息

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

 

Data Path:表示数据实际到达的时间

input delay:这是刚刚添加的约束,输入延时3ns;

IBUF(Prop ibuf I O)

IBUF的输入到输出所经历的延时0.521ns;

net:PCB布线的延时时间0.455ns;

总共合计数据实际到达的时间为3.976ns。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_19,color_FFFFFF,t_70,g_se,x_16

 

Destination Clock Path:目的时钟路径

clock sdrclk rise edge:采样时钟为源时钟的一个时钟周期之后,周期为10ns;

IBUF(Prop ibuf I O)

IBUF的输入到输出所经历的延时0.319ns;

net:PCB布线延时0.640ns;

BUFG(Prop bufg I O)

BUFG的输入到输出所经历的延时0.026ns;

net:PCB布线延时0.593ns;

clock pessimism:这个参数由于没有约束,所以为0;

clock uncertainty:时钟的不确定性,这个有芯片自身决定。

总共合计数据所被要求到达的时间为11.523ns。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATGluZXN0LTU=,size_20,color_FFFFFF,t_70,g_se,x_16

 

根据建立时间的余量(setup slack)的定义

建立时间余量=数据所被要求到达的时间 - 数据实际到达的时间

可以验证输入延迟约束加上之后是符合预期的。

至此,就把通过添加输入延迟,其中建立时间余量的部分分析完毕,

在保持时间余量的操作和建立时间余量大同小异,分析方法也是近似。

 

往期系列博客

 【Xilinx Vivado时序分析/约束系列1】FPGA开发时序分析/约束-寄存器间时序分析

 【Xilinx Vivado时序分析/约束系列2】FPGA开发时序分析/约束-建立时间

​​​​​​ 【Xilinx Vivado时序分析/约束系列3】FPGA开发时序分析/约束-保持时间

 【Xilinx Vivado时序分析/约束系列4】FPGA开发时序分析/约束-实验工程上手实操

 【Xilinx Vivado时序分析/约束系列5】FPGA开发时序分析/约束-IO时序分析

 【Xilinx Vivado时序分析/约束系列6】FPGA开发时序分析/约束-IO时序输入延时

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Xilinx Vivado时序分析/约束系列7】FPGA开发时序分析/约束-FPGA单沿采样数据input delay时序约束实操 的相关文章

  • 【模电】0017 开关电源的原理及分析

    开关电源一般简称为DCDC 比我们前两节分析的线性电源复杂一些 它与线性电源最大的不同在于其调整管的工作状态 开关电源中的调整管工作在开关状态 即只工作在饱和区和截止区 1 典型开关电源的原理 一个典型的降压型开关电源原理如下图 首先 我们
  • IC数字后端

    在 innovus 里面 有时候我们需要控制 tie cell 的 fanout 和 net length 来避免 tie cell 可能出现 max transition 或者 max fanout 的违例 一般来说 只要 fanout
  • 硬件系统工程师宝典(30)-----降压式Buck电路分析

    各位同学大家好 欢迎继续做客电子工程学习圈 今天我们继续来讲这本书 硬件系统工程师宝典 上篇我们说到DC DC变换中的开关调节模式有功耗小 效率高并且稳压范围宽的特点以及DC DC的指标参数和设计要求 今天我们来分析一下DC DC中的一个典
  • CUDA异步并发之CUDA流详解

    CUDA中得异步并发 CUDA 将以下操作公开为可以彼此同时操作的独立任务 在主机上计算 设备上的计算 从主机到设备的内存传输 从设备到主机的内存传输 在给定设备的内存中进行内存传输 设备之间的内存传输 这些操作之间实现的并发级别将取决于设
  • KEIL经常出现 Encountered an improper argument 弹窗

    关于 keil5 使用在线调试时 经常出现 Encountered an improper argument 弹窗 经实测 可有如下方法 方法1 下载UV4 exe 替换本机电脑 Keil UV4目录下的UV4 exe 更换后 如果不能编译
  • buck降压斩波电路

    文章目录 前言 1 斩波电路概述 2 Buck 降压斩波电路的理论计算 3 Buck 降压斩波电路的仿真 总结 前言 Buck 降压斩波器是实际使用数量最多的一类斩波电路 也是各大厂商开关电源芯片中种类最多一类 降压斩波电路的原理也相对易于
  • 【三电平SVPWM学习

    导读 本期对三电平SVPWM的原理和建模做一个简单介绍 并与两电平SVPWM做了一个对比 后面把三电平的SVPWM运用到异步电机直接转矩控制中 看与传统的两电平SVPWM 控制性能是否得到改善 模型可分享 关注公众号 浅谈电机控制 留下邮箱
  • 【FPGA多周期时序约束详解】- 解读FPGA多周期时序约束的全过程

    FPGA多周期时序约束详解 解读FPGA多周期时序约束的全过程 FPGA作为数字电路设计的常见工具 其设计中必然会遇到时序约束的问题 而多周期时序约束更是FPGA设计中不可避免的难点之一 本文将详细介绍FPGA多周期时序约束的全过程 并结合
  • CTLE均衡器的使用问题

    CTLE是一种高速数字通信中很常见的均衡器 有别于其他常用的FFE和DFE等数字滤波器 它是一种模拟滤波器 一般通过传递函数的方式表征 以USB3 1 Gen2的公式举例 在其峰值增益 第一极点和第二极点均为定值的前提下 幅频响应曲线将通过
  • Pcb电路板的表面处理工艺简说

    随着PCB生产技术的日益增大 产品对其工艺的要求也越来越高 下面 四川英特丽 gt http www citpcba com 为您解释PCB板上的表面工艺 对比各类PCB板的表面处理工艺有哪些优缺点和适用场景 从 PCBA贴片加工 gt h
  • SMT贴片加工组装工艺的可靠性

    随着电子产品的广泛应用 电子产品的可靠性已成为一个重中之重的问题 大多应用场合都要求电子产品的性能必须稳定 可靠并且能够安全的运行 在航空航天 军事 通信 金融 监控等领域 如果电子系统发生故障会对其造成很大的损失 电子产品种类复杂 由材料
  • 学习区分dB、dBm、dBuV、dBi

    dB 对于分贝的概念 很多朋友最早接触这个概念 是用 分贝 评估声音的大小 声音的大小用分贝 dB 表示 是一种对数单位 用来描述声音的强度或功率比例 如果P是我们需要测试的声压级或声功率级 P0是参考值 通常取为标准听觉阈限的声压级 X
  • 基于FPGA的简易BPSK和QPSK

    1 框图 2 顶层 3 m generator M序列的生成 输出速率为500Kbps 4 S2P是串并转换模块 将1bit的m序列转换到50M时钟下的2bit M序列数据 就有4个象限 5 my pll是生成256M的时钟作为载波 因为s
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • Matlab图像处理系列——图像复原之噪声模型仿真

    微信公众号上线 搜索公众号 小灰灰的FPGA 关注可获取相关源码 定期更新有关FPGA的项目以及开源项目源码 包括但不限于各类检测芯片驱动 低速接口驱动 高速接口驱动 数据信号处理 图像处理以及AXI总线等 本节目录 一 图像复原的模型 二
  • Vivado ILA的debug信息保存与读取

    保存 write hw ila data D Project FPGA ILA Debug Data 202401041115 ila upload hw ila data hw ila 1 读取 display hw ila data r
  • 基于信号完整性的PCB设计原则

    最小化单根信号线质量的一些PCB设计建议 1 使用受控阻抗线 2 理想情况下 所有信号都应该使用完整的电源或地平面作为其返回路径 关键信号则使用地平面作为返回路径 3 信号的返回参考面发生变化时 在尽可能接近信号换层孔的位置增加至少一个返回
  • 有效降低EMI干扰的PCB设计原则

    降低EMI干扰的一些PCB设计建议 1 通过在所有信号下提供低阻抗 连续的返回路径来减少地面反弹 尤其是在表层布线时 2 保持所有走线距离板的边缘至少5倍信号线宽 3 对于关键信号 尽量采用带状线布局 4 将高速率 大电流的组件尽可能远离I
  • DSCA190V 57310001-PK

    DSCA190V 57310001 PK DSCA190V 57310001 PK 具有两个可编程继电器功能 并安装在坚固的 XP 外壳中 DSCA190V 57310001 PK 即可使用 只需最少的最终用户校准 DSCA190V 573
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步

随机推荐

  • PHP计算时间差

    时间计算 距离现在多长时间 function format date time t time time f array 31536000 gt 年 2592000 gt 个月 604800 gt 星期 86400 gt 天 3600 gt
  • Web应用下实现定时任务简便方法

    在WEB应用下实现定时任务的简便方法 在web方式下 如果我们要实现定期执行某些任务的话 除了用quartz等第三方开源工具外 我们可以使用Timer和TimeTask来完成指定的定时任务 第一步 创建一个任务管理类 实现ServletCo
  • 基于QT的人脸识别考勤管理系统【一】

    前言 上篇我们已经用opencv实现了人脸识别https blog csdn net qq 42449351 article details 99052241 现在我们就用人脸识别来做一个考勤管理系统 该系统开发工具是 win10 Qt C
  • Numpy学习笔记三——数组切片、bool索引、掩码和花哨索引

    Numpy数组切片 bool索引 掩码和花哨索引 数组切片 slice 数组切片的公式为 my array start end step start end step 示例1 import numpy as np 设置随机种子 np ran
  • mfc入门基础(一)-单文档应用程序框架

    最近因为相关业务 需要接触下mfc的一些老代码 但是mfc上手并没有qt那么简单 所以四处寻找学习资料 发现一个写的挺好的教程 这边我进行转载下 学习的过程中进行了一些修改 总结下 此处附上原文链接 鸡啄米MFC入门系列教程 逸适安然的博客
  • Python爬虫三:抓取链家已成交二手房信息(58W数据)

    环境 Windows7 python3 6 Pycharm2017 目标 抓取链家北京地区已成交二手房信息 无需登录 如下图 户型 朝向 成交时间价格等 保存到csv 最后一共抓取约58W数据 程序运行8h 全部文章 京东爬虫 链家爬虫 美
  • 本人遇到的spring事务之UnexpectedRollbackException异常解决笔记

    本人最近在使用spring事务管理的过程中遇到如下异常 导致服务端抛出500给前端 让搞前端的哥们抱怨我心里着实不爽 前前后后折腾了近半个小时才得于解决 今天就做个笔记 以免日后又犯这个错误 好了 错误是这样的 org springfram
  • Linux环境下 sonar、sonar-scanner、cppcheck配置并汉化

    所需安装包以及插件 我的文件夹如下 文件最好按我的方式存放 以免后面修改路径 下载文件并复制到Linux环境 下载以上所有文件 下载链接 链接 https pan baidu com s 1WUYqFg1MEqVEzbb sn49Ig 提取
  • 数据分析师收藏:关于数据挖掘你想了解的都在这

    随着计算机技术的革新和网络媒体的快速发展 人们的生活以及企业发展进入了高速信息数字化时代 每天的生活以及生产都要产生大量的数据 例如交通 网络 文字 方位等 但是人们很少能够意识到这些丰富数据中隐藏了有价值的信息 什么是数据挖掘 2009年
  • 线性回归与逻辑回归的区别

    因 直 线 一 线性回归与逻辑回归的区别 1 线性回归要求因变量服从正态分布 logistic回归对变量分布没有要求 2 线性回归要求因变量 Y 是连续性数值变量 而logistic回归要求因变量是分类型变量 3 线性回归要求自变量和因变量
  • 动态代理及实现

    反射中Method方法 jdk动态代理 1 InvocationHandler接口 通俗来讲 InvocationHandler接口表示你的代理要干什么 做什么事 2 Method类 method invoke 此invoke和Invoca
  • 按键控制蜂鸣器实验

    实验任务 本节实验任务是使用领航者上的PL KEY0按键来控制蜂鸣器发声 初始状态为蜂鸣器鸣叫 按下按键后蜂鸣器停止鸣叫 再次按下开关 蜂鸣器重新鸣叫 模块示意图 按键消抖 通常我们所使用的开关为机械弹性开关 当我们按下或松开按键时 由于弹
  • Python项目实战:将3D灰度图像转换为3D彩色图像

    文章目录 3D GRAY to 3D RGB 使用颜色映射的方式 将灰度值映射到彩色空间中的特定颜色 一 多维数组 10x12x14 channel重复 在RGB中 将 灰度图 分别赋值给 R G B图 显示彩色图 channel叠加1 将
  • RCE——命令执行漏洞

    命令执行漏洞介绍 应用程序有时需要调用一些执行系统命令的函数 如在PHP中 以下函数 system system 执行shell命令也就是向dos发送一条指令 exec exec 方便的PHP函数发送一个字符串供操作系统的命令行处理 she
  • Nginx快速入门&&部署前端项目

    目录 一 Nginx简介 1 1 负载均衡 演示 1 1 2 安装nginx 再复制一份一样的tomcat并修改端口号 打开两个tomcat的服务 打开防火墙中的8081端口 修改Nginx配置 重启Nginx服务 让配置生效 1 2 反向
  • 将Win10包含中文的用户名改为英文的,同时解决Anaconda navigator无法运行jupyter的问题

    Win10用户名包含中文字符导致无法在Anaconda navigator直接运行jupyter的问题 本篇文章内容包含 WIN10如何修改 C Users 用户名 中的用户名 执行1后 也就是用户名修改为英文名后 在Anaconda na
  • 【CSUR-IG】OpenHarmony啃论文俱乐部--我在ACM Survey阅读计算机综述,看到了卷54第八期十六篇:自动编程提示生成概览:HINTS 框架

    本文出自ACM技术洞察研究团队 CSUR IG Computing Surveys Interest Group 成员 深圳大学大三学生 中原工学院研一学生 中原工学院研一学生 安阳工学院大三学生 南通科技学院大三学生 我们是来自4个地方的
  • 【C语言】sizeof和strlen的区别

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 size和strlen的异同 二 数组名意义的两个特例
  • 【ProTable的基本使用】

    const columns ProColumns title 表头显示的名称 dataIndex name 后端字段 列数据在数据项中对应的路径 支持通过数组查询嵌套路径 width 20 filters 表头的筛选菜单项 text 男 v
  • 【Xilinx Vivado时序分析/约束系列7】FPGA开发时序分析/约束-FPGA单沿采样数据input delay时序约束实操

    目录 问题引入 分析问题 实际工程解决 新建工程 顶层代码 编辑时序约束 生成时序报告 设置输入延迟 具体分析 Data Path 表示数据实际到达的时间 Destination Clock Path 目的时钟路径 往期系列博客 根据第六节