vivado 一文归纳出时序约束

这篇具有很好参考价值的文章主要介绍了vivado 一文归纳出时序约束。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.概述

对于时序路径来说,一共有4种时序路径,如下图:

create_generated_clock -name clk_div -source [get_pins div/clk_div_reg/c] -d,Xilinx,fpga开发,Powered by 金山文档

(1)从上游芯片最后一级触发器的时钟发送沿有效到FPGA中第一级触发器的输入。

(2)FPGA内部从上级触发器时钟发送沿有效到下级触发器的输入。

(3)从FPGA最后一级触发器的时钟发送沿有效到下游芯片第一级触发器的输入。

(4)从FPGA的输入端口经过组合逻辑直接到FPGA的输出端口。

根据不同的时序路径就有一些不同类型的时序约束。进行时序分析的前提是有正确的时序约束。

二.时序约束介绍

2.1主时钟约束

对于时序约束来说,主时钟约束是基准。主时钟有两种,第一种是外部晶振产生的时钟,第二种是GT产生的接收端时钟和发送端时钟。

create_clock -period 20.000 -name clk50m_i -waveform {0.000 10.000} [get_ports clk50m_i]

create_clock -name rxclk -period 3.33 [get_pins gt0/RXOUTCLK]

2.2手动生成的时钟

对于MMCM和PLL,只用约束他们的输入时钟(一般是主时钟),工具会自动生成他们的输出时钟。而对于自己手动生成的时钟,比如分频时钟,需要约束。

create_generated_clock -name clkdiv2 -source [get_ports clkin] -divide_by 2 [get_pins REGA/Q](由clkin分出来的二分频时钟)

2.1和2.2就把需要约束时钟周期的时钟介绍了,下面介绍其他类型时序约束。

2.3异步时钟组

对于异步时钟的跨时钟域,应告诉工具此为异步时钟组,不需要做时序分析,否则工具会对此做不正确的时序分析,增加编译时间,为了优化此处时序,还会侵占关键路径的布局布线资源。但是告诉工具不代表不用人为的去做跨时钟处理,只是让工具对此处不分析。

set_clock_groups -asynchronous -group CLKOUT0 -group CLKOUT1

2.4互斥时钟组

对于两个时钟A,B输入,然后经过一个BUFGMUX产生一个C时钟的情况,那么就会产生互斥时钟。

(1)若A、B、C三个时钟都没有交集,那么需声明A、B为逻辑互斥(-group对象不同,一个A,一个B)时钟组。

(2)若A、B、C三个时钟有交集,那么需声明由A产生的C时钟和由B产生的C时钟为物理互斥(-group对象相同,都是BUFGMUX的O端)时钟组。

create_generated_clock -name clk_div -source [get_pins div/clk_div_reg/c] -d,Xilinx,fpga开发,Powered by 金山文档

2.5伪路径约束

对于上电才会工作的寄存器对应的路径、异步复位路径、只在测试时才会用到的逻辑对应的路径,都要告知工具这是一条不需要时序分析的路径。好处类似于异步时钟组约束。

set_false_path -from [get_pins rst_n_tmp_reg/C]

2.6多周期约束

下图是多周期约束的一些概念:

create_generated_clock -name clk_div -source [get_pins div/clk_div_reg/c] -d,Xilinx,fpga开发,Powered by 金山文档

由于缺省情况下,工具默认的是单周期约束,多周期约束的目的就是放松该条路径的时序,如果可以多周期约束的路径没有进行约束,那么就会按照单周期就行时序的过优化,侵占其他关键路径的布局布线资源,造成其他关键路径的时序为例和建立时间裕量变小。

案例:

create_generated_clock -name clk_div -source [get_pins div/clk_div_reg/c] -d,Xilinx,fpga开发,Powered by 金山文档

2.7Input_delay约束

input_delay是上游芯片最后一级触发器的发送沿有效时到数据到达FPGA port时的延时。

create_generated_clock -name clk_div -source [get_pins div/clk_div_reg/c] -d,Xilinx,fpga开发,Powered by 金山文档

set_input_delay -clock clk 4 [get_ports din](告诉工具,上游芯片在数据输入到FPGA端口需要4ns,也就是在建立时间不违例的前提下,FPGA内部Tdata加Tsu最多有6ns的时间)

2.8Output_delay约束

output_delay是从FPGA的port到下游芯片的第一级触发器的捕获沿有效时的延时。反映的是下游芯片的第一级触发器能稳定捕获数据的时间段。

create_generated_clock -name clk_div -source [get_pins div/clk_div_reg/c] -d,Xilinx,fpga开发,Powered by 金山文档

set_output_delay -clock clk 6 [get_ports dout](告诉工具,下游芯片在数据输入后需要6ns才能满足建立时间需求稳定的采到数据,也就是FPGA内部Tco加Tdata需控制在4ns以内)

2.9Max_delay约束

FPGA输入port经过组合逻辑直接输出到输出port的延时。或者多周期路径、异步路径间使用(不常用)文章来源地址https://www.toymoban.com/news/detail-807604.html

create_generated_clock -name clk_div -source [get_pins div/clk_div_reg/c] -d,Xilinx,fpga开发,Powered by 金山文档

到了这里,关于vivado 一文归纳出时序约束的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vivado时序约束基础

          今天这篇博客,笔者向大家简单介绍Xilinx FPGA中的Vivado时序约束基础知识,也为后续的学习打好铺垫。 Xilinx Design Constraints (XDC) 概述 • XDC 在本质上就是Tcl 语言,但其仅支持基本的Tcl 语法,如变量、列表和运算符等等,对其他复杂的循环以及文件I/O 等语法可以通过在

    2024年02月10日
    浏览(35)
  • FPGA时序约束--实战篇(读懂Vivado时序报告)

    目录 一、新建工程 二、时序报告分析 1、打开时序报告界面 2、时序报告界面介绍 3、时序路径分析 三、总结 FPGA开发过程中,vivado和quartus等开发软件都会提供时序报告,以方便开发者判断自己的工程时序是否满足时序要求。 本文将详细介绍如何读懂Vivado时序报告,包括报告

    2024年02月12日
    浏览(32)
  • Vivado操作之时序约束介绍

    目录 一、前言 二、时序约束界面 三、时序约束介绍 四、参考        任何一个FPGA工程都需要设置相关的时序约束,下面将介绍Vivado中如何进行时序约束操作以及各种约束的使用方法。          在一个工程运行到IMPLEMENTATION后,进入到左侧的Flow Navigator窗口,点击IMPL

    2024年02月05日
    浏览(39)
  • tcl学习之路(五)(Vivado时序约束)

      主时钟通常是FPGA器件外部的板机时钟或FPGA的高速收发器输出数据的同步恢复时钟信号等。下面这句语法大家一定不会陌生。该语句用于对主时钟的名称、周期、占空比以及对应物理引脚进行约束。   在设计中,未约束的时钟可以通过时钟网络报告和时钟确认报告查看

    2024年02月12日
    浏览(33)
  • Vivado XDC约束与时序优化(一)

    摘要:有关xdc约束、时序优化的文章很多,并不重头开始介绍,仅仅记录一下在实际工程中遇到的情况。时序不好是非常正常的现象,此时需要进行大量的约束。我认为时序约束的难点其实更多的是在,有时候约束一条路径之后导致了功能出现异常。此时不得不采取其它的方

    2023年04月14日
    浏览(71)
  • FPGA的时序分析、约束和收敛(6)----如何读懂vivado下的时序报告?

    目录 写在前面 1、建立工程与添加时序约束 2、时序报表         在之前的文章中写了一些时序分析的基础概念,同时还说了文章中提到的公式根本就不需要记忆,因为综合工具vivado会帮你把所有时序路径都做详尽的分析,你所需要做的就是理解概念。         光说不

    2024年02月12日
    浏览(40)
  • Vivado时序约束之—— set_max_delay、set_min_dealy(最大最小延迟约束)

    1. set_max_delay、set_min_delay约束的目的 最大最小延迟约束主要是为了解决异步信号之间的时序路径进行时序约束的问题。最大延迟约束(set_max_delay)将默认覆盖建立时间分析中的最大路径延迟;最小延迟约束(set_min_delay)将默认覆盖保持时间分析中的最小路径延迟。所谓的最

    2023年04月09日
    浏览(33)
  • 【前端设计】SDC中生成时钟create_generated_clock语法解析

     我们的目标是┏ (゜ω゜)=☞芯片前端全栈工程师~喵! 好久没有写前端设计系列的博客了,这次因为要在系统里加入时钟分频器因此复习一下sdc中关于生成时钟的约束语法,以下内容来自《综合与时序分析的设计约束》和一些自己的理解。 在sdc约束中,由端口输入的时钟使

    2024年02月01日
    浏览(27)
  • Vivado时序约束TCL命令——获取引脚(get_pins)在FPGA设计中起着重要作用。本文将为大家详细介绍get_pins命令的语法和使用方法。

    Vivado时序约束TCL命令——获取引脚(get_pins)在FPGA设计中起着重要作用。本文将为大家详细介绍get_pins命令的语法和使用方法。 get_pins命令用于获取指定对象(Object)的引脚(Pin)列表。我们可以使用get_pins来获取具有特定命名约定的引脚(如CLOCK、RESET等),并通过对这些引

    2024年02月05日
    浏览(31)
  • FPGA时序分析与时序约束(四)——时序例外约束

    目录 一、时序例外约束 1.1 为什么需要时序例外约束 1.2 时序例外约束分类 二、多周期约束 2.1 多周期约束语法 2.2 同频同相时钟的多周期约束 2.3 同频异相时钟的多周期约束 2.4 慢时钟域到快时钟域的多周期约束 2.5 快时钟域到慢时钟域的多周期约束 三、虚假路径约束 四、最

    2024年01月20日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包