clock skew = < destination reg clock delay > - < source reg clock delay >

为了使clock skew 的影响可以叠加到data delay上,给出如下三组公式(对于fpga2ic):

1.clock skew = <ext_clk delay> - < fpga_clk delay>

2.data delay' = <data delay> - <clock skew>

对于多位宽数据(以三位为例):在D[0]~D[2]三个位宽中,delay max 影响建立时间(建立关系), delay min 影响保持时间(保持关系)。对于多位数据而言,max对应着最大延迟的那一位数据,min对应着最小延迟的那一位数据。TimeQuest 在分析D[0..2]建立时间的时候,它只要注意“最危险的建立时间”即可,按逻辑而言,没有什么比“最危险”更危险。同样思路,TimeQuest 在分析D[0..2]保持时间的时候,它只要注意“最危险的保持时间”即可,因为没有什么比“最危险”更危险。

公式的推导都以fpga 为中心,因此fpga2ic 的公式又称output 公式,针对启动沿的 output 公式又名output max,换之针对下一个启动沿的output 公式又名output min。

output max= <fpga2ext delay max> - < clock skew > + ext_Tsu;

output min= <fpga2ext delay min> - < clock skew > - ext_Th;

ic2fpga 是ic 发送数据,fpga 读取数据的外部模型,不过不管位置怎么改变,大体上都是大同小异而已,

input max=<ext2fpga delay max> - < clock skew > + ext_Tco;

input min= <ext2fpga delay min> - < clock skew > + ext_Tco;

set_input_delay:

set output delay 与set input delay 好似一个“外包资料”,首先我们收集各种外部的延迟信息接着包裹在一个“外包资料”里,然后丢给TimeQuest 。TimeQuest 当然晓得某某delay max 是针对建立关系,又某某delay min 是针对保持关系。

set_output_delay:

TimeQuest 在分析内部的setup 与hold 时序时顺便参考一下“外包资料”的信息... 就这样TimeQuest 就可以独立分开外部延迟信息与内部延迟信息。

set_clock_latency:对于时钟信息而言,max对应着这一时钟的最大延迟,min对应着同一时钟的最小延迟,当时钟只有延迟而没有抖动时(即延迟始终如一),成both。

set_clock_latency 约束行为不是为某个时钟设置延迟,而是告诉TimeQuest 有关外边时钟信号的延迟信息。

set_clock_uncertainly:我们也知道SLDE 时间差是针对建立关系,而SEDL 时间差是针对保持关系。在此之前我们先将它们从input/output 公式中除掉,然后再将SLDE 与SEDL 的时间差透过set_clock_uncertainly 告诉TimeQuest 即可。

也即:使用set_clock_latency的作用是人为告诉TimeQuest时钟的一些信息,由TimeQuest计算clock skew,所以使用了set_clock_latency时,就应该将input/output max/min中的clock skew去掉。

在计算 set_input_delay 与set_output_delay 的时候,我们可以除掉clock skew,取而代之用set_clock_latency 约束命令告诉TimeQuest 关于外部模型中到底什么时钟信号,然而又有多少的延迟。其中时钟信号的产生源没有抖动,又或者说抖动的early 与late值(both)作为前提。此外,透过set_clock_latency 约束命令,在Data Arrival Path 与Data Required Path 的信息中clock network delay 也会显示对应的延迟。

set_clock_uncertainly 所谓的uncertainly 是指时钟信号抖动的信息,不过更正确一点说就是各种时钟抖动所产生的可能性时序里所隐藏的SLDE 时钟差与SEDL 时钟差,前者是针对建立关系,后者则是针对保持关系。

set_max_delay:

set_min_delay:

两个都是比较老的命令,set maximum delay 直接自定义建立关系,而set minimum delay 直接定义保持关系。

对于物理时钟来说,delay max(late)会造就最小的建立时间,换之delay min(early)会造就最小的保持时间。

create_generated_clock:是个笨蛋,只能一级衔接一级,不能跨级,否则出现错误:

Warning: No paths exist between clock target "ext1_clk" of clock "ext1_clk" and its clock source. Assumingzero source clock latency.

----------------------------------------------------------------------------------------------------------------------

eetop前辈说:setup violation
主要就是设法剪掉critical path的delay,要么pipeline,要么retiming,要么把combination往前后级挪一挪。
hold time violation
hold time violation是clock tree的skew引起的。主要的宗旨就是设法加前面一级combination的delay,比如加buffer什么的。这时候hold time不满足必须让前前面延迟大一些,并大到比clock period还大出至少一个hold time来。也可以适当把clock period缩小。不过hold time并不是自己能控制的,挺闹心的。
在综合时,综上所述,
setup violation是由于前级组合的延迟过大引起的,因此要用set_max_delay来限制,
hold violation是由于前级组合延迟国小引起的,因此不能让他太小,要用set_min_delay来限制。

转载于:https://www.cnblogs.com/fkl523/p/4005449.html

TimeQuest学习之三------外部寄存器模型相关推荐

  1. UVM入门与进阶学习笔记17——寄存器模型(2)

    目录 寄存器模型集成 总线UVC的实现 总线UVC解析 MCDF寄存器设计代码 Adapter的实现 Adapter的集成 访问方式 前门访问 后门访问 前门与后门的比较 前门与后门的混合应用 寄存器 ...

  2. Esper学习之三:进程模型 .

    之前对Esper所能处理的事件结构进行了概述,并结合了例子进行讲解,不清楚的同学请看Esper学习之二:事件类型.今天主要为大家解释一下Esper是怎么处理事件的,即Esper的进程模型. 1.Upd ...

  3. UVM实战 卷I学习笔记10——UVM中的寄存器模型(3)

    目录 后门访问与前门访问 *UVM中前门访问的实现 后门访问操作的定义 *使用interface进行后门访问操作 UVM中后门访问操作的实现:DPI+VPI *UVM中后门访问操作接口 后门访问与前门 ...

  4. UVM学习笔记—寄存器模型的搭建及使用

    目录 0.前言 1.DUT中的寄存器是什么? 2.为什么需要寄存器模型? 3.如何搭建寄存器模型 3.0基本概念 3.1搭建一个reg(将reg filed加入到reg) 3.2搭建一个reg blo ...

  5. 《UVM实战卷Ⅰ》学习笔记 第七章 UVM中的寄存器模型(2)

    推荐另外一篇相对更为基础的UVM 寄存器相关知识梳理UVM寄存器模型笔记_IC-V的博客-CSDN博客 目录 7.3 后门访问和前门访问 1.后门访问的方式 7.4复杂的寄存器模型 7.5复杂寄存器模 ...

  6. 基于强化学习的自动化剪枝模型

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨AI科技评论 编辑丨极市平台 导读 GitHub上最新开源的一 ...

  7. 软件测试学java,软件测试学习Java的内存模型

    原标题:软件测试学习Java的内存模型 软件测试学习Java的内存模型 主内存与工作内存 定义程序中各个变量的访问规则. 规定JVM必须遵循的最小保证. 定义操作的偏序关系.Happens-Befor ...

  8. linux内核学习之三:linux中的32位与64位

    linux内核学习之三:linux中的"32位"与"64位" 在通用PC领域,不论是windows还是linux界,我们都会经常听到"32位" ...

  9. 推荐系统CTR预估学习路线:深度模型

    推荐系统CTR预估学习路线:从LR到FM/FFM探索二阶特征的高效实现 推荐系统CTR预估学习路线:利用树模型自动化特征工程 推荐系统CTR预估学习路线:深度模型 推荐系统CTR预估学习路线:引入注意 ...

最新文章

  1. Hadoop_23_MapReduce倒排索引实现
  2. NDK学习笔记-多线程与生产消费模式
  3. iOS开发网络篇—搭建本地服务器
  4. 程序设计基础——c语言篇,C语言程序设计基础篇.ppt
  5. (软件工程复习核心重点)第七章软件维护-第三节:软件可维护性
  6. 去哪儿-05-recommendDev
  7. C语言OJ项目参考(2963) 判断三角形
  8. swift 二进制读写_Swift二进制搜索树
  9. category is in invalid format hint微信第三方平台将第三方提交的代码包提交审核出错...
  10. 4r照片尺寸是多大_数码照片4D、4R、6RW是什么意思,怎样调整4D照片尺寸?
  11. 安装NVIDIA显卡驱动
  12. NC单据模板公式(6大类)
  13. 【STM32】串行通讯方式及USART串口通信
  14. Centos版Linux 一些常用操作命令 收集
  15. windows下如果批量修改文件的后缀名
  16. 换一种姿势挖掘任意用户密码重置漏洞
  17. matlab 提取极值,利用matlab 进行极值统计的一个例子——gev 方法.pdf
  18. bboss quartz定时任务使用案例介绍
  19. Linux 防火墙简介
  20. speak failed:not bound to TTS engine解决方案

热门文章

  1. GCC 同时编译多个 C/C++ 文件
  2. 发现服务内存中free部分很小,available部分很大,应该怎么办
  3. java和C#面向对象的区别
  4. pytorch lstm crf 代码理解
  5. CPU Cache原理与示例
  6. PyTorch 自动微分示例
  7. 硬件平台上深度学习自动内核优化
  8. PyTorch 数据并行处理
  9. CloudHub概述
  10. cuDNN 功能模块解析