时序约束(二): input delay约束和output delay约束

一、input delay约束

在千兆以太网数据收发项目中,RGMII的数据输入方式为DDR,源同步输入方式,可以用之前提到的分析模型进行约束。 

在时序约束原理中我们提到,input delay约束的就是发射沿lunch到数据有效的延时,根据时序图得到:

         LrMax = Tco max + Td_bd max -(Tc_d + Tc_bd) ------分析建立时间时序

         LrMin   = Tco min + Td_bd min -(Tc_d + Tc_bd)  ------分析保持时间时序

一般在input delay分析中,我们默认Td_bd ==Tc_bd,并不考虑Tc_d。因此LrMax和LrMin就指的是上游器件输出数据和输出时钟的延时。

PHY芯片datasheet中时序图如下,图中的TskewR==2ns是时钟信号相对于数据信号的延时。数据线之间的SKEW未知,我们假设为0.2ns。

可以得到:

                                 LrMax = 2 + skew/2 = 2.1

                                 LrMin = 2 - skew/2 = 1.9

接下来就可以在工具中进行约束。首先,打开Open Implementation----->Edit Timing constraints。

然后选择Set Input delay,点击加号“+”添加约束信息。

设置参数。

        Clock:时钟,选择rx_clk。

        Objects:约束目标,选择RGMII输入信号。

        Delay value:延时时间。

        Delay value is relative to clock edge:边沿选择。

        Delay value specifies:最大最小选择。

Delay value is relative to clock edge选择rise,Delay value specifies选择max,在Delay value处设置上升沿的最大、最小延时;Delay value is relative to clock edge选择full,Delay value specifies选择max,在Delay value处设置上升沿的最大延时;Delay value is relative to clock edge选择rise,Delay value specifies选择min,在Delay value处设置上升沿的最小延时。下降沿的延时最大、最小延时设置同理。

这样就完成了input delay的约束,点击保存,可以看到input delay约束信息已经更新到了.xdc文件中。

 重新综合、布局布线,点击Report Timing。

 设置要打印的时序报告的参数。设置要打印的信号。

 在option 中的设置观察时序路径条数和每个路径打印多少条信息, 点击 OK 。

 这样就生成了时序报告。可以看到建立时间和保持时间没有发生时序违例。

二、indelay control方式input delay约束 

         以上的input delay约束方式是通过PLL调整时钟相位以达到时序要求,indelay control方式是通过对数据进行延时以满足时序要求。

        通过IDELAY2源语实现这个功能,例化该源语在ODDR模块中,模块输入数据信号tx_dat[7:0]和使能信号tx_en首先进入该源语进行数据延时,源语输出再进行ODDR转换。

DELAYE2 #(
.CINVCTRL_SEL("FALSE"), // Enable dynamic clock inversion (FALSE, TRUE)
.DELAY_SRC("IDATAIN"), // Delay input (IDATAIN, DATAIN)
.HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE")
.IDELAY_TYPE("FIXED"), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE
.IDELAY_VALUE(0), // Input delay tap setting (0-31)
.PIPE_SEL("FALSE"), // Select pipelined mode, FALSE, TRUE.REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-
.0)..SIGNAL_PATTERN("DATA") // DATA, CLOCK input signal)IDELAYE2_inst_dv (.CNTVALUEOUT(), // 5-bit output: Counter value output.DATAOUT(rx_ctrl_t), // 1-bit output: Delayed data output.C(1'b0), // 1-bit input: Clock input.CE(1'b0), // 1-bit input: Active high enable increment/decrement input.CINVCTRL(1'b0), // 1-bit input: Dynamic clock inversion input.CNTVALUEIN(5'd0), // 5-bit input: Counter value input.DATAIN(1'b0), // 1-bit input: Internal delay data input.IDATAIN(rx_ctrl), // 1-bit input: Data input from the I/O.INC(1'b0), // 1-bit input: Increment / Decrement tap delay input.LD(1'b0), // 1-bit input: Load IDELAY_VALUE input.LDPIPEEN(1'b0), // 1-bit input: Enable PIPELINE register to load data input.REGRST(1'b0) // 1-bit input: Active-high reset tap-delay input);IDDR #(.DDR_CLK_EDGE("SAME_EDGE_PIPELINED"), // "OPPOSITE_EDGE", "SAME_EDGE"// or "SAME_EDGE_PIPELINED".INIT_Q1(1'b0), // Initial value of Q1: 1'b0 or 1'b1.INIT_Q2(1'b0), // Initial value of Q2: 1'b0 or 1'b1.SRTYPE("SYNC") // Set/Reset type: "SYNC" or "ASYNC") IDDR_rxctrl_inst (.Q1(rxdv), // 1-bit output for positive edge of clock.Q2(rxerr), // 1-bit output for negative edge of clock.C(rx_clk_90), // 1-bit clock input.CE(1'b1), // 1-bit clock enable input.D(rx_ctrl_t), // 1-bit DDR data input.R(1'b0), // 1-bit reset.S(1'b0) // 1-bit set);

其中IDELAY_VALUE表示设置延时大小,可以填写的值为0~31,具体分辨率是多少每个器件并不相同,需要查看手册。

此外,这个源语还要配合IDELAYCTRL使用:

IDELAYCTRL IDELAYCTRL_inst (.RDY(RDY), // 1-bit output: Ready output.REFCLK(sysclk), // 1-bit input: Reference clock input.RST(~locked) // 1-bit input: Active high reset input

通过调整IDELAY_VALUE的值,就可以调整数据和时钟之间的延时,消除时序违例。当IDELAY_VALUE增大时延时增大,建立时间裕量减小,保持时间裕量增大。

三、output delay约束 

同样使用千兆以太网数据收发中的RGMII输出端作为约束对象。在不知道目标端的建立时间和保持时间时,可以利用数据的skew进行output delay约束。

 根据时序图可得:

                                                dMax = Tcycle - askew

                                                dMin = bskew

设置SKEW 的目的是让综合工具知道输出的时钟采样沿不能落在 SKEW 的区域 。我们可以通过调整skew的值使时钟沿落在数据的中心位置。这里设置askew=bskew=1.5ns,则dMax = 2.5,dMin = 1.5。

这样就可以在工具中进行约束了。首先要创建生成时钟,告诉综合工具tx_clk是时钟信号。打开Open Implementation----->Edit Timing constraints,选中Creat Generated Clock,点击加号“+”,这里设置时钟源为PLL输出时钟,目标时钟为tx_clk。

 然后选择set Output Delay,点击加号“+”添加约束信息。

设置参数。

        Clock:时钟,选择tx_clk。

        Objects:约束目标,选择RGMII输出信号。

        Delay value:延时时间。

        Delay value is relative to clock edge:边沿选择。

        Delay value specifies:最大最小选择。

Delay value is relative to clock edge选择rise,Delay value specifies选择max,在Delay value处设置上升沿的最大、最小延时;Delay value is relative to clock edge选择full,Delay value specifies选择max,在Delay value处设置上升沿的最大延时;Delay value is relative to clock edge选择rise,Delay value specifies选择min,在Delay value处设置上升沿的最小延时。下降沿的延时最大、最小延时设置同理。

这样就完成了output delay的约束,点击保存,可以看到output delay约束信息已经更新到了.xdc文件中。

  接下来我们重新综合、布局布线,Open Implemented Design,点击Report Timing。

设置时序报告打印参数。这里在End Points处添加。

 这样就生成了时序报告。可以看到建立时间和保持时间没有发生时序违例。

 

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

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

相关文章

Vue 3中 <script setup> 与生命周期钩子函数的详细解析

Vue 3中 <script setup> 与生命周期钩子函数的详细解析 Vue 3 引入了 <script setup> 语法糖&#xff0c;这是一种简化和集成组件逻辑的新方式。尽管 <script setup> 简化了组件的编写&#xff0c;但仍然可以利用 Vue 提供的生命周期钩子函数来管理组件的生…

【光伏开发】光伏项目开发流程

光伏项目作为可再生能源领域的重要组成部分&#xff0c;其开发过程涉及多个环节&#xff0c;从项目初期的可行性研究到后期的运营维护&#xff0c;每一步都至关重要。本文将按照项目确认、前期阶段、中期阶段、后期阶段的顺序&#xff0c;详细介绍光伏项目的开发流程。 一、项…

Rust 基础教程

Rust 编程语言教程 Rust是一门注重安全、并发和性能的系统编程语言。本文将从Rust的基本语法、常用功能到高级特性&#xff0c;详细介绍Rust的使用方法。 目录 简介环境配置基础语法 变量和常量数据类型函数控制流 所有权和借用 所有权借用 结构体和枚举 结构体枚举 模块和包…

一文搞懂 java 线程池:基础知识

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 …

Linux:网络基础1

文章目录 前言1. 协议1.1 为什么要有协议&#xff1f;1.2 什么是协议&#xff1f; 2. 网络2.1 网络通信的问题2.2 网络的解决方案——网络的层状结构2.3 网络和系统的关系2.4 网络传输基本流程2.5 简单理解IP地址2.6 跨网络传输 总结 前言 在早期的计算机发展中&#xff0c;一开…

【云计算】阿里云、腾讯云、华为云平台数据库对比

目录 一、云数据库关键信息调研对比 二、详细功能 1、阿里云RDS 2、腾讯云RDS 3、华为云RDS 一、云数据库关键信息调研对比 云平台支持数据库部署对比支持功能备注阿里云 Mysql、Postgresql等 特有数据库&#xff1a;PolarDB&#xff0c;适配mysql 基础-单节点账号管…

实现渐变字体的方案

需要注意&#xff0c;这个切图是把一整块&#xff0c;都切出来做的。所以需要用span&#xff0c;不能是div 还有描边的话&#xff0c;scale会有边距缩放的问题&#xff0c;描边就用font weight 来实现 style{{ background: "var(--Linear, linear-gradient(96deg, #fff…

【华为战报】5月、6月HCIP考试战报!

华为认证&#xff1a;HCIA-HCIP-HCIE 点击查看&#xff1a; 【华为战报】4月 HCIP考试战报&#xff01; 【华为战报】2月、3月HCIP考试战报&#xff01; 【华为战报】11月份HCIP考试战报&#xff01; 【HCIE喜报】HCIE备考2个月丝滑通关&#xff0c;考试心得分享&#xff…

Python序列化和反序列化

一.序列化和反序列化 在Python中&#xff0c;序列化&#xff08;Serialization&#xff09;和反序列化&#xff08;Deserialization&#xff09;是处理对象数据的过程&#xff0c;主要用于对象的存储或网络传输。 序列化&#xff08;Serialization&#xff09; 序列化是将Pyth…

7.x86游戏实战-C++实现跨进程读写-跨进程写内存

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 上一个内容&#xff1a;6.x86游戏实战-C实现跨进程读写-通过基址读取人物状态标志位 上一个内容通过基…

深层神经网络

深层神经网络 深层神经网络 深度神经网络&#xff08;Deep Neural Networks&#xff0c;DNN&#xff09;可以理解为有很多隐藏层的神经网络&#xff0c;又被称为深度前馈网络&#xff08;DFN&#xff09;&#xff0c;多层感知机&#xff08;Multi-Layer perceptron&#xff0c…

ghost恢复?电脑文件恢复如何操作?电脑数据恢复工具!5款!

在数字化时代&#xff0c;电脑数据的价值日益凸显。然而&#xff0c;数据丢失、误删、系统崩溃等问题时有发生&#xff0c;给个人和企业带来巨大损失。本文将为您详细介绍Ghost恢复方法&#xff0c;同时推荐五款高效的电脑数据恢复工具&#xff0c;助您轻松应对数据丢失的困扰。…

使用归档实用工具怎么打不开 mac上好用的解压软件 归档实用工具打不开怎么回事 mac 归档实用工具 苹果电脑好用的压缩软件有哪些

Mac系统自带的 “归档实用工具”&#xff0c;集成在系统右键菜单中&#xff0c;包含了文件压缩和压缩包解压功能。很多mac小伙伴会发现有些文件使用归档实用工具打不开。由于专利和软件开源问题&#xff0c;该工具目前仅支持ZIP格式的压缩和解压。同时&#xff0c;对于一些在Wi…

深入探讨数据结构:基础理论与应用实践

前言 数据结构是计算机科学的重要组成部分&#xff0c;是编程与算法设计的基础。本文将系统地介绍数据结构的基础概念、常见类型、具体实现及其在实际开发中的应用&#xff0c;帮助读者深入理解这一核心领域。 一、数据结构的基本概念 数据结构指的是计算机中数据的组织、管…

推广旅游卡项目,一个月创收十几万,为何说旅游卡项目堪称盈利利器?

推广旅游卡项目&#xff0c;一月个创收十几万&#xff0c;为何说旅游卡项目堪称盈利利器&#xff1f; 其精髓恰在于那十六字真言&#xff1a;即时收益&#xff0c;高额利润&#xff0c;操作简便&#xff0c;粉丝友好。接下来&#xff0c;我将从推广人员的视角&#xff0c;为您…

Microsoft SQL Server 2019安装和设置用户密码

1、免费下载两个安装包 SQL2019-SSEI-Dev 地址:https://www.microsoft.com/en-us/sql-server/sql-server-downloads SSMS-Setup-CHS 地址:https://aka.ms/ssmsfullsetup 安装具体不在阐述了&#xff0c;可以参考我这篇文章&#xff1a;SQL Server 2019安装详细教程 2、以W…

开发常见的http状态码.——400,401,403,404,500,501,503,状态码大全!

目录 一. 1开头的(临时信息响应码) 二. 2开头的(成功信息码) 三. 3开头的(重定向信息码) 四. 4开头的(客户端错误信息码) 五. 5开头的(服务器内部错误信息码) 一. 1开头的(临时信息响应码) 100&#xff1a;继续请求。示意请求者应当继续发送请求&#xff0c;客户端返回此码…

Cookie的默认存储路径以及后端如何设置

问题场景 最近在写一个前后端分离的项目&#xff0c;需要跨域&#xff0c;前端开发同学遇到一个问题一直报错&#xff0c;本质上就是后端返回的cookie中的sessionID在前端发送http请求时无法被请求自动携带&#xff0c;每次htttpRequest都被后端识别为一个新的session&#xf…

Spring MVC数据绑定和响应——数据回写(二)JSON数据的回写

项目中已经导入了Jackson依赖&#xff0c;可以先调用Jackson的JSON转换的相关方法&#xff0c;将对象或集合转换成JSON数据&#xff0c;然后通过HttpServletResponse将JSON数据写入到输出流中完成回写&#xff0c;具体步骤如下。 1、修改文件DataController.java&#xff0c;在…

verilog 参数用法

参数比较运算 localparam QPLL_FBDIV_IN (QPLL_FBDIV_TOP 16) ? 10b0000100000 : (QPLL_FBDIV_TOP 20) ? 10b0000110000 :(QPLL_FBDIV_TOP 32) ? 10b0001100000 :(QPLL_FBDIV_TOP 40) ? 10b0010000000 :(QPLL_FBDIV_TOP 64) ? 10b0011100000 :(QPLL_FBDIV_TO…