TIMEQUEST学习之黑金动力(四)
现在知道时序约束主要是FPGA to ic,或者ic to FPGA。

上图可以表示FPGA to IC, IC to FPGA.
fpga2ic:
fpga2ext 是 fpga 致 ic 信号的走线延迟;
clk2fpga 是时钟信号致 fpga 的走线延迟;
clk2ext 是时钟信号致 fpga 的走线延迟;
Tsu/Th 外部器件的寄存器特性;
( Tsu 信号建立时间; Th 信号保持时间)
ic2fpga:
ext2fpga 是 ic 致 fpga 信号的走线延迟;
clk2fpga 是时钟信号致 fpga 的走线延迟;
clk2ext 是时钟信号致 fpga 的走线延迟;
Tco/minTco 外部器件的寄存器特性;
( Tco 信号输出时间; minTco 最小信号输出时间)
先来看看FPGA2IC:

上图是FPGA to ic 的信号连接。我写的sram,uart 和这个 还是有点区别因为只有数据线,没有clk。
clock skew 结果最终会直接作用在数据的延迟上。这是非常重要的一点。clock skew = < destination reg clock delay > - < source reg clock delay >
对 fpga2ic 的外模型而言, fpga_clk 是源寄存器时钟然而 ext_clk 是目的寄存器时钟。
data delay = 2ns
data delay' = <data delay> - <clock skew>
= 2ns - 2ns
= 0ns
data delay 数据延迟
data delay' 时钟差作用后的数据延迟

上图表示:数据延迟2ns,即2ns数据才到达目的寄存器,即建立时间8ns,但是因为时钟偏移2ns作用到数据偏移后,相当于数据没有延迟。即建立时间10ns。

时钟偏移: 2 - 1 = 1ns, 数据延迟: 2ns, 当时钟偏移作用于数据延迟后的数据延迟次:data_delay - clock_skew = 2 - 1 = 1 ns。
以上是建立关系,下面分析保持关系:

如果使用“屁股”计算保持时间:data_arrival_time - data_aquaire_time = 2 -2 =0ns.

同理如果使用“屁股”计算: (1+2) - 2 = 1 ns。
如果将clock_skew作用于data_delay:data_delay - clock_skew = 3 - 2 = 1ns。
以上是FPGA to ic,接下来讨论ic to FPGA:时钟偏移作用于数据后建立时间和保持时间。

可以看出此时FPGA是接收数据,但是时钟偏移作用于数据延迟原理一样的。

这是保持时间图。clock_delay = 1ns;data_delay = 2ns;data_delay‘ = data_delay - clock_skew = 2 - 1 = 1ns。
以上讨论的是一位位宽的,那多位位宽的呢?


均匀与不均匀的延迟压力。
这样对保持时间和建立时间是有影响的。从上图可以看出 max_delay = 3ns, min_delay = 1ns。建立时间最危险的是D[2] = 7ns,,保持时间最危险的是D[0] = 1ns,可以知道max_delay影响建立时间,min_delay影响保持时间。如下图:

clock_skew作用于不均匀的延迟会是什么样的结果?原理还是一样的,就是将时钟偏移作用于数据而时钟保持不变。如下图:


TIMEQUEST学习之黑金动力(四)的更多相关文章
- timequest学习之黑金动力(一)
黑金动力的资料还是非常有价值的.通过建模篇,对于给定的时序关系,我总能实现.但是,这总是很初级的能力.也只是为后面的建模服务.所以,现阶段我的能力还是非常有限.我相信我一定会成为牛人,能够独挡一面.借 ...
- TIMEQUEST学习之黑金动力(二)
之一就是第一章,这是第二章.在开始之前,要对第一章内容说说我理解到的: (1)时序分析是节点对节点的分析.(2)这个latch edge是锁存上一个lunch edge输出的(满足建立关系的)值.(3 ...
- TIMEQUEST学习之黑金动力(三)
不知不觉,学到的第四章.但是对于TQ的内部模型和外部模型的完整分析还是没有很好的理解.接着学习......... 我们也了解静态时序分析的第一步骤,亦即时钟方面的约束.此外,也稍微对 Report T ...
- 我的MYSQL学习心得(十四) 备份和恢复
我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) ...
- 【Unity Shaders】学习笔记——SurfaceShader(四)用纹理改善漫反射
[Unity Shaders]学习笔记——SurfaceShader(四)用纹理改善漫反射 转载请注明出处:http://www.cnblogs.com/-867259206/p/5603368.ht ...
- OpenGL学习之路(四)
1 引子 上次读书笔记主要是学习了应用三维坐标变换矩阵对二维的图形进行变换,并附带介绍了GLSL语言的编译.链接相关的知识,之后介绍了GLSL中变量的修饰符,着重介绍了uniform修饰符,来向着色器 ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- VSTO学习笔记(十四)Excel数据透视表与PowerPivot
原文:VSTO学习笔记(十四)Excel数据透视表与PowerPivot 近期公司内部在做一种通用查询报表,方便人力资源分析.统计数据.由于之前公司系统中有一个类似的查询使用Excel数据透视表完成的 ...
- Linux学习总结(十四)—— 查看CPU信息
文章首发于[博客园-陈树义],点击跳转到原文Linux学习总结(十四)-- 查看CPU信息. Linux学习总结(十四)-- 查看CPU信息 商用服务器CPU最常用的是 Intel Xeon 系列,该 ...
随机推荐
- apache+php 字符编码问题解决
如果你在网上搜索 “apache配置”,搜到的页面大多都会建议你在httpd.conf中加上这么一句:AddDefaultCharset GB2312.对于新手而且是只用GB2312编码的开发人来说, ...
- 《gradle 用户指南中文版》 第1章、简介
第1章.简介 目录 1.1 关于本用户指南 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具. 这里我们将介绍Gradle,我们认为gradle让java项 ...
- Android 和 Dagger 2 中的依赖注入
原文:Dependency Injection in Android with Dagger 2 作者:Joe Howard 译者:kmyhy 在现代开发团队中到处充斥着"你一定要用依赖注入 ...
- iOS数组的去重,判空,删除元素,删除重复元素 model排序 等
一: 去重 有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型.今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下. 1.利用NSDiction ...
- Makefile中怎么使用Shell if判断
/********************************************************************* * Makefile中怎么使用Shell if判断 * 说 ...
- Java项目中使用Log4J
Log4J下载 官网:http://logging.apache.org/log4j/ Log4J 1.2下载地址:http://logging.apache.org/log4j/1.2/downlo ...
- PHP 关于empty和isset对于参数的判断结果
<?php class test{} $a1 = null; $a2 = ""; //$a3 = $a4 = 0; $a5 = '0'; $a6 = false; $a7 = ...
- MySQL实战 | 04 为什么要使用索引?
原文链接:MySQL实战 | 为什么要使用索引? 用过 MySQL 的应该都知道索引是干啥的吧,应该多少都设置过索引,但是若是问你索引是怎么实现的,你能说上来吗? 索引是什么? MySQL 官方对索引 ...
- 接口测试基础——第7篇 Python中_、__、__func__之间的区别
今天的东西很少,主要是给自己做个笔记,顺便帮大家普及一下Python中的边角知识: 1.if __name__ == "__main__"是什么意思 答:一个.py文件,如果是自身 ...
- timequest 中set input delay set output delay 的使用
set_input_delay/ set_output_delay TimeQuest出现以后,随之 set input delay 与 set output delay 也跟着出现,该约束命令用“外 ...