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

时间: 2024-10-07 22:07:48

TIMEQUEST学习之黑金动力(四)的相关文章

timequest学习之黑金动力(一)

黑金动力的资料还是非常有价值的.通过建模篇,对于给定的时序关系,我总能实现.但是,这总是很初级的能力.也只是为后面的建模服务.所以,现阶段我的能力还是非常有限.我相信我一定会成为牛人,能够独挡一面.借用同学的一句话:仰望星空,脚踏实地.现在来学习FPGA的时序约束. 时序约束,是要对时序有要求为前提才有时序约束.以前的建模都是想像时序是否满足,也有实际约束过但是这里的时序约束是为了熟悉TQ,而做的约束.也就是没有具体的时序要求.直到最近遇到了,模块的最高运行频率.比如在64位加法器,4级流水线实

TIMEQUEST学习之黑金动力(二)

之一就是第一章,这是第二章.在开始之前,要对第一章内容说说我理解到的: (1)时序分析是节点对节点的分析.(2)这个latch edge是锁存上一个lunch edge输出的(满足建立关系的)值.(3)建立关系和建立时间余量.(4)保持关系和保持时间余量.特别是使用屁股计数就是实际TQ的分析方法. TimeQuest 模型是用来解决两个点寄存器(节点)之间的建立关系和保持关系问题.但是在一个最简单的 HDL 设计,不可能仅是由两个寄存器就组成,里边可能会有“很多很多很多”对寄存器.结果 Time

TIMEQUEST学习之黑金动力(三)

不知不觉,学到的第四章.但是对于TQ的内部模型和外部模型的完整分析还是没有很好的理解.接着学习......... 我们也了解静态时序分析的第一步骤,亦即时钟方面的约束.此外,也稍微对 Report Timing 逐步深入了解,何为一举列出多有相关的时序报告等. 在此我们需要用到 set_multicycle_path 约束命令. 严格来说 set_multicycle_path 的约束行为是告诉 TimeQuest 更动某对节点的启动沿和锁存沿 ... 想必读者听不明白是吧?说傻瓜点就是,告诉

学习php的第四天

今天是学习php的第四天.由于花了一天的时间来装一个系统,而我对这个也并不是很了解,所以就不再赘述.只学习了如何设置链接. 首先是几个定义..表示当前所在目录,src图片地址.加载超链接 <a href=...>.text-decoration意为链接装饰,用于去除下划线. 下面是代码.我用昨天的导航条为基础,给每个标题都设置了链接.代码如下. <html> <head> <title></title> <style> div{hei

20145320《Java程序设计》第3周学习总结(第四章)

20145320<Java程序设计>第3周学习总结(第四章) 教材学习内容总结 对象(Object):存在的具体实体,具有明确的状态和行为 类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制 从类看对象:类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象 从对象看类:类的产生,是从少数实例,推广到大量相似实例的抽象化过程(abstraction) 类是对象的设计图,对象是类的实例,生成对象要先定义类 4.1 类与对象 定义类使用c

马哥学习笔记二十四——分布式复制快设备drbd

DRBD: 主从 primary: 可执行读.写操作 secondary: 文件系统不能挂载 DRBD: dual primay, 双主(基于集群文件系统的高可用集群) 磁盘调度器:合并读请求,合并写请求: Procotol:drbd数据同步协议 A: Async, 异步  数据发送到本机tcp/ip协议栈 B:semi sync, 半同步  数据发送到对方tcp/ip协议 C:sync, 同步  数据到达对方存储设备 DRBD Source: DRBD资源 资源名称:可以是除了空白字符外的任意

义隆单片机学习笔记之(四) 编程及烧录

工具说明: 1.UIDE,编程环境 2.UWriter:烧录软件 下载地址: (见官网) 一 UIDE  1.1 创建工程: 1.2 选择型号: 1.3 编程及编译 二 UWriter 2.1 安装 (Serial number在购买烧录器的时候,从代理经销商处获得!) 2.2 选择目标芯片  2.3 配置选择 (注:由于是OTP,很多功能都是在配置的时候指定,所以这里非常重要.晶振.时钟的选择,延时程序要与之对应: 是否需要保护等,根据自己的需要而定) 编译之后生成的.map文件,详细的描述了

Android学习笔记(十四)——在运行时添加碎片(附源码)

在运行时添加碎片 点击获取源码 将UI分割为多个可配置的部分是碎片的优势之一,但其真正强大之处在于可在运行时动态地把它们添加到活动中. 1.使用上一篇创建的Fragments项目,在main.xml文件中注释掉两个<fragment>元素: 2.在FragmentActivity.java中添加下面的代码: FragmentManager fragmentManager = getSupportFragmentManager();//向活动添加碎片 FragmentTransaction fr

quick-cocos2d-x 学习系列之十四 测试用例

quick-cocos2d-x 学习系列之十四 测试用例 定义变量,创建13个场景名字 local items = { "framework.helper", "framework.native", "framework.display", "framework.crypto", "framework.network", "framework.luabinding", "fra