0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解时序约束的基本方法

FPGA之家 来源:博客园东海扬尘 作者:博客园东海扬尘 2022-03-15 10:50 次阅读

1. 基本的约束方法

为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。最普遍的三种路径为:

输入路径(Input Path),使用输入约束

寄存器到寄存器路径(Register-to-Register Path),使用周期约束

输出路径(Output Path),使用输出约束

具体的异常路径(Path specific exceptions),使用虚假路径、多周期路径约束

1.1. 输入约束Input Constraint

OFFSET IN约束限定了输入数据和输入时钟边沿的关系。

1.1.1. 系统同步输入约束System Synchronous Input

在系统同步接口中,同一个系统时钟既传输数据也获取数据。考虑到板子路径延时和时钟抖动,接口的操作频率不能太高。

141921207466649.jpg

1‑1简化的系统同步输入SDR接口电路图

141921429813090.jpg

1‑2SDR系统同步输入时序

上述时序的约束可写为:

NET "SysClk" TNM_NET = "SysClk";

TIMESPEC "TS_SysClk" = PERIOD "SysClk" 5 ns HIGH 50%;

OFFSET = IN 5 ns VALID 5 ns BEFORE "SysClk";

1.1.2. 源同步输入约束Source Synchronous Input

在源同步接口中,时钟是在源设备中和数据一起产生并传输。

141922189657364.jpg

1‑3简化的源同步输入DDR接口电路

141922311991526.jpg

1‑4DDR源同步输入时序

上图的时序约束可写为:

NET "SysClk" TNM_NET = "SysClk";

TIMESPEC "TS_SysClk" = PERIOD "SysClk" 5 ns HIGH 50%;

OFFSET = IN 1.25 ns VALID 2.5 ns BEFORE "SysClk" RISING;

OFFSET = IN 1.25 ns VALID 2.5 ns BEFORE "SysClk" FALLING;

1.2. 寄存器到寄存器约束Register-to-Register Constraint

寄存器到寄存器约束往往指的是周期约束,周期约束的覆盖范围包括:

覆盖了时钟域的时序要求

覆盖了同步数据在内部寄存器之间的传输

分析一个单独的时钟域内的路径

分析相关时钟域间的所有路径

考虑不同时钟域间的所有频率、相位、不确定性差异

1.2.1. 使用DLL, DCM, PLL, and MMCM等时钟器件自动确定同步关系

使用这一类时钟IP Core,只需指定它们的输入时钟约束,器件将自动的根据用户生成IP Core时指定的参数约束相关输出,不需用户手动干预。

141923154182651.jpg

1‑5输入到DCM的时钟约束

上图的时序约束可写为:

NET “ClkIn” TNM_NET = “ClkIn”;

TIMESPEC “TS_ClkIn” = PERIOD “ClkIn” 5 ns HIGH 50%;

1.2.2. 手动约束相关联的时钟域

在某些情况下,工具并不能自动确定同步的时钟域之间的时钟时序关系,这个时候需要手动约束。例如:有两个有相位关系的时钟从不同的引脚进入FPGA器件,这个时候需要手动约束这两个时钟。

141923485594225.jpg

1‑6通过两个不同的外部引脚进入FPGA的相关时钟

上图的时序约束可写为:

NET“Clk1X"TNM_NET=“Clk1X";

NET“Clk2X180"TNM_NET=“Clk2X180";

TIMESPEC"TS_Clk1X"=PERIOD"Clk1X 7 5ns;

TIMESPEC"TS_Clk2X180"=PERIOD"Clk2X180“TS_Clk1X/2PHAS2 +1.25ns;

1.2.3. 异步时钟域

异步时钟域的发送和接收时钟不依赖于频率或相位关系。因为时钟是不相关的,所以不可能确定出建立时间、保持时间和时钟的最终关系。因为这个原因,Xilinx推荐使用适当的异步设计技术来保证对数据的成功获取。Xilinx约束系统允许设计者在不需考虑源和目的时钟频率、相位的情况下约束数据路径的最大延时。

异步时钟域使用的约束方法的流程为:

为源寄存器定义时序组

为目的寄存器定义时序组

使用From-to和DATAPATHDELAY关键字定义寄存器组之间的最大延时

1.3. 输出约束Output Constraint

输出时序约束约束的是从内部同步元件或寄存器到器件管脚的数据。

1.3.1. 系统同步输出约束System Synchronous Output Constraint

系统同步输出的简化模型如图所示,在系统同步输出接口中,传输和获取数据是基于同一个时钟的。

141924475273310.jpg

1‑7系统同步输出

其时序约束可写为:

NET "ClkIn" TNM_NET = "ClkIn";

OFFSET = OUT 5 ns AFTER "ClkIn";

1.3.2. 源同步输出约束Source Synchronous Output Constraint

在源同步输出接口中,时钟是重新产生的并且在某一FPGA时钟的驱动下和数据一起传输至下游器件。

141926126681633.jpg

1‑8源同步输出简化电路时序图

141926297158691.jpg

1‑9源同步小例子时序图

小例子的时序约束可写为:

NET “ClkIn” TNM_NET = “ClkIn”;

OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” RISING;

OFFSET = OUT AFTER “ClkIn” REFERENCE_PIN “ClkOut” FALLING;

1.3.3. 虚假路径约束False Path Constraint

令SRC_GRP为一组源寄存器,DST_GRP为一组目的寄存器,如果你确定SRC_GRP到DST_GRP之间的路径不会影响时序性能,那么可以将这一组路径约束为虚假路径,工具在进行时序分析的时候将会跳过对这组路径的时序分析。这种路径最常见于不同时钟域的寄存器数据传输,如下图:

141927063877420.jpg

1‑10虚假路径

其约束可写为:

NET "CLK1" TNM_NET = FFS "GRP_1";

NET "CLK2" TNM_NET = FFS "GRP_2";

TIMESPEC TS_Example = FROM "GRP_1" TO "GRP_2" TIG;

1.3.4. 多周期路径约束Multi-Cycle Path Constraint

在多周期路径里,令驱动时钟的周期为PERIOD,数据可以最大n*PERIOD的时间的从源同步元件传输到目的同步元件,这一约束降低工具的布线难度而又不会影响时序性能。这种约束通常用在有时钟使能控制的同步元件路径中。

141928291849658.jpg

图 1-11时钟使能控制的寄存器路径

必须说明的是上图Enable信号的产生周期必须大于等于n*PERIOD,且每个Enable传输一个数据。假设上图的n=2,MC_GRP为时钟使能Enable控制的多周期同步元件组,则约束可写为:

NET "CLK1" TNM_NET = "CLK1";

TIMESPEC "TS_CLK1" = PERIOD "CLK1" 5 ns HIGH 50%;

NET "Enable" TNM_NET = FFS "MC_GRP";

TIMESPEC TS_Example = FROM "MC_GRP" TO "MC_GRP" TS_CLK1*2;

随笔记录自己从一个项目立项到最后调试完成所做的工作,包括调研选型、关键技术突破、知识短板补缺等,随着时间的推移,会不断地根据实践经验反馈完善以前的博文,力求每一个要论述的问题精准完备,具有高度可信的参考价值,也希望看我博文的读者能够多提意见建议,帮助我成为一个更优秀的项目负责人,让我们一起共同进步,谢谢大家!

原文标题:1. 基本的约束方法

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5317

    浏览量

    120000
  • 接口
    +关注

    关注

    33

    文章

    8496

    浏览量

    150828
  • DCM
    DCM
    +关注

    关注

    0

    文章

    157

    浏览量

    26416

原文标题:1.   基本的约束方法

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    VIVADO时序约束及STA基础

    时序约束的目的就是告诉工具当前的时序状态,以让工具尽量优化时序并给出详细的分析报告。一般在行为仿真后、综合前即创建基本的时序
    的头像 发表于 03-11 14:39 9682次阅读

    FPGA主时钟约束详解 Vivado添加时序约束方法

    在FPGA设计中,时序约束的设置对于电路性能和可靠性都至关重要。在上一篇的文章中,已经详细介绍了FPGA时序约束的基础知识。
    发表于 06-06 18:27 1w次阅读
    FPGA主时钟<b class='flag-5'>约束</b><b class='flag-5'>详解</b> Vivado添加<b class='flag-5'>时序</b><b class='flag-5'>约束</b><b class='flag-5'>方法</b>

    请教时序约束方法

    我是一个FPGA初学者,关于时序约束一直不是很明白,时序约束有什么用呢?我只会全局时钟的时序约束
    发表于 07-04 09:45

    FPGA时序约束的几种方法

    控。从最近一段时间工作和学习的成果中,我总结了如下几种进行时序约束方法。按照从易到难的顺序排列如下:0. 核心频率约束 这是最基本的,所以标号为0。1. 核心频率
    发表于 06-02 15:54

    FPGA时序约束的几种方法

    Incremental Compilation。这是造成上述两种方法容易混淆的原因。5. 核心频率约束+时序例外约束+I/O约束+寄存器布局
    发表于 12-27 09:15

    时序约束资料包

    好的时序是设计出来的,不是约束出来的时序就是一种关系,这种关系的基本概念有哪些?这种关系需要约束吗?各自的详细情况有哪些?约束
    发表于 08-01 16:45

    时序约束时序分析 ppt教程

    时序约束时序分析 ppt教程 本章概要:时序约束时序分析基础常用
    发表于 05-17 16:08 0次下载

    时序约束用户指南

    时序约束用户指南包含以下章节: ?第一章“时序约束用户指南引言” ?第2章“时序约束
    发表于 11-02 10:20 0次下载

    FPGA时序约束方法

    FPGA时序约束方法很好地资料,两大主流的时序约束都讲了!
    发表于 12-14 14:21 19次下载

    如何使用时序约束向导

    了解时序约束向导如何用于“完全”约束您的设计。 该向导遵循UltraFast设计方法,定义您的时钟,时钟交互,最后是您的输入和输出约束
    的头像 发表于 11-29 06:47 2984次阅读
    如何使用<b class='flag-5'>时序</b><b class='flag-5'>约束</b>向导

    FPGA的约束时序分析的概念详解

    A 时序约束的概念和基本策略 时序约束主要包括周期约束(FFS到FFS,即触发器到触发器)和偏移约束
    的头像 发表于 10-11 10:23 5467次阅读
    FPGA的<b class='flag-5'>约束</b>、<b class='flag-5'>时序</b>分析的概念<b class='flag-5'>详解</b>

    详解FPGA的时序input delay约束

    本文章探讨一下FPGA的时序input delay约束,本文章内容,来源于配置的明德扬时序约束专题课视频。
    发表于 05-11 10:07 4096次阅读
    <b class='flag-5'>详解</b>FPGA的<b class='flag-5'>时序</b>input delay<b class='flag-5'>约束</b>

    如何在Vivado中添加时序约束

    前面几篇文章已经详细介绍了FPGA时序约束基础知识以及常用的时序约束命令,相信大家已经基本掌握了时序约束
    的头像 发表于 06-23 17:44 2279次阅读
    如何在Vivado中添加<b class='flag-5'>时序</b><b class='flag-5'>约束</b>

    如何在Vivado中添加时序约束呢?

    今天介绍一下,如何在Vivado中添加时序约束,Vivado添加约束方法有3种:xdc文件、时序约束
    的头像 发表于 06-26 15:21 3920次阅读
    如何在Vivado中添加<b class='flag-5'>时序</b><b class='flag-5'>约束</b>呢?

    浅谈时序设计和时序约束

      本文主要介绍了时序设计和时序约束
    的头像 发表于 07-04 14:43 1357次阅读