热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RTL综合时序介绍(3)

时钟Clocks为了进行时序分析,你必须指定时钟的周期或者设计中使用的时钟,以及可能的过渡时间,波形,延迟,不确定性,相对偏移,以及其他时序特性,如图1-9所示。时序分析将以上所有

时钟 Clocks

为了进行时序分析,你必须指定时钟的周期或者设计中使用的时钟,以及可能的过渡时间,波形,延迟,不确定性,相对偏移,以及其他时序特性,如图1-9所示。时序分析将以上所有的时序特性考虑在内,以确定每种时序检查的最坏可能情形。指定时钟的命令叫做create_clock.

To perform timing analysis, you must specify the period of the clock or clocks used in the design and possibly the transition time, waveform, latency, uncertainty, relative skew, and other timing characteristics, as shown in Figure 1-9. The timing analysis takes all of these clock characteristics into account to determine the worst possible conditions for each type of timing check. The command for specifying clocks is create_clock.

图1-9 时钟特性

Figure 1-9 Clock Characteristics

如果在设计中使用了多个时钟,你必须指定这些时钟之间的关系,以便分析工具能够检查由一个时钟触发,由另一个时钟捕获的路径时序信息。默认情况下,工具认为在路径起始点发生(信号)启动事件后,下一个能够在路径终点发生的时间边沿应该能够捕获在路径终点的数据。任何与这个基本假设不符的异常都必须被看做时序异常。时序异常的例子包括:假路径、多周期路径、明确的最小延迟路径和最大延迟路径。

If multiple clocks are used in the design, you must specify the timing relationships between those clocks so that the analysis tool can check the timing of a path launched by one clock and captured by another. By default, the tool assumes that after the occurrence of a launch event at a path startpoint, the very next clock edge that can occur at the path endpoint should capture the data at the end of the path. Any exceptions to this basic assumption must be specified as timing exceptions. Some examples of timing exceptions are false paths,multicycle paths, and explicit minimum-delay paths and maximum-delay paths:

•假路径是设计中物理存在的路径,但由于逻辑电路配置,预期的数据序列,或者操作模式的原因,不会将数据从起始点传播到终点。

•多周期路径是一个设计上从触发到捕获需要超过1个时钟周期的路径

•最小延迟路径或最大延迟路径是一个必须满足设计者显式指定的带具体值的延迟约束的路径

一个时钟信号通常情况下对许多时序器件有着很大的扇出系数。因此,每个时钟通常实现为一个多级层次结构中组织的缓冲区的分支树。

时钟树综合通常运行在布局布线层,而不是在逻辑综合层。因为布局布线层提供了用于生成时钟树的内部连线长度信息。

为了在时钟树综合和布局之前执行时序分析,逻辑综合工具必须估计从时钟源到时序器件时钟引脚的延迟。

• A false path is a path that physically exists in the design but never propagates data from the startpoint to the endpoint due to the logic configuration, expected data sequence, or operating mode.

• A multicycle path is a path designed to take more than one clock cycle from launch to capture.

• A minimum-delay path or maximum-delay path is a path that must meet a delay constraint that you specify explicitly as a time value.

A clock signal typically has a very large fanout to many sequential devices. Therefore, each clock is usually implemented as a branching tree of buffers organized in a multilevel hierarchy. Clock tree synthesis is typically performed at the placement and routing stage, not at the logic synthesis stage, because placement and routing provide the interconnect length information needed to build the tree. To perform timing analysis before clock tree synthesis and layout, the logic synthesis tool must estimate the delays from the clock source to the clock pins of sequential devices.

输入与输出延迟

Input and Output Delays

时序分析工具通过比较起始点到终点的延迟与发射和捕获时钟边缘之间的时间跨度来确定路径的时间裕量。但是,对于从设计的输入处开始的路径,不能从设计的网表中确定数据到达的时间。这是因为外部发射时间和逻辑延迟是未知的。因此,要分析输入到寄存器的时间,必须将导致输入的外部时间条件指定为输入延迟。这个概念如图1-10所示。

The analysis tool determines the timing slack for a path by comparing the startpoint-to-endpoint delay with the time span between the launch and capture clock edges.However, for a path starting at an input to the design, the arrival time of the data cannot be determined from the design netlist. This is because the external launch time and logic delays are unknown. Therefore, to analyze the input-to-register timing, you must specify the external timing conditions leading up to the input as an input delay. This concept is illustrated in Figure 1-10.

图1-10 外部输入延迟

Figure 1-10 External Input Delay

接下来将要分析的是被虚线框框住的设计。(将要)到达输入端口A的数据被CLK时钟驱动的外部时序器件发射。然后该数据在通过输入端口A前通过了一些组合逻辑电路。为了分析路径1的时序,你需要指定从时钟边沿到的数据到达输入端口A处的延迟大小。在这个例子中,输入延迟是外部触发器CLK-to-Q的延迟加上外部缓冲器的延迟。为了获得从输入端口A到设计中的组合逻辑之间的更精确的延迟计算结果,你也可以指定外部缓冲器的驱动特性。

The design being analyzed is enclosed in the dashed rectangle. The data arriving at input port "A" is launched by an external sequential device clocked by CLK. Then the data passes through some combinational logic before reaching input "A." To analyze the timing of Path 1,you need to specify the amount of delay from the clock edge to the arrival of data at input "A." In this example, the input delay is the CLK-to-Q delay of the external flip-flop plus the delay of the external buffer. You can also specify the drive characteristics of the external buffer for a more accurate calculation of the interconnect delay from input "A" to the combinational logic inside the design.

同样地,对于一个在设计输出端结束的路径,不能从设计的网表中确定数据的捕获时间。这是因为捕获时间和外部逻辑延迟是未知的。因此,要分析寄存器到输出的时间安排,必须指定外部定时条件超出了输出作为输出延迟。这个概念在图1-11中进行了阐释。

Similarly, for a path ending at an output of the design, the capture time of the data cannot be determined from the design netlist. This is because the capture time and external logic delays are unknown. Therefore, to analyze the register-to-output timing, you must specify the external timing conditions beyond the output as an output delay. This concept is illustrated in Figure 1-11.

图1-11 外部输出延迟

Figure 1-11 External Output Delay

从输出端口Z离开的数据经过了一些组合逻辑电路并被CLK时钟驱动的外部时序元件捕获。为了分析路径3的时序,你需要指定从输出端Z的到达的数据到捕获时钟边沿的延迟大小。在这个例子中,输出延时是外部缓冲器的延时加上外部触发器的建立时间要求,你应该指定外部电路的负载特性来精确计算到输出端Z的内部互连线的延迟。指定输入延迟和输出延迟的命令是set_input_delay与set_output_delay.

The data leaving output port "Z" passes through some combinational logic and is captured by an external sequential device clocked by CLK. To analyze the timing of Path 3, you need to specify the amount of delay from the arrival of data at output "Z" to the capture clock edge. In this example, the output delay is the delay of the external buffer plus the setup time requirement for the external flip-flop. You should also specify the load characteristics of the external circuit to accurately account for the interconnect delay at the output "Z"The commands for specifying input delays and output delays are set_input_delay and set_output_delay.



推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文总结和分析了JDK核心源码(2)中lang包下的基础知识,包括常用的对象类型包和异常类型包。在对象类型包中,介绍了Object类、String类、StringBuilder类、StringBuffer类和基本元素的包装类。在异常类型包中,介绍了Throwable类、Error类型和Exception类型。这些基础知识对于理解和使用JDK核心源码具有重要意义。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
  • 流数据流和IO流的使用及应用
    本文介绍了流数据流和IO流的基本概念和用法,包括输入流、输出流、字节流、字符流、缓冲区等。同时还介绍了异常处理和常用的流类,如FileReader、FileWriter、FileInputStream、FileOutputStream、OutputStreamWriter、InputStreamReader、BufferedReader、BufferedWriter等。此外,还介绍了系统流和标准流的使用。 ... [详细]
author-avatar
手机用户2502908547
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有