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

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

3天内不再提示

创建输入输出接口时序约束的窍门

吴湛 来源:鲁林 作者:鲁林 2022-08-02 09:54 次阅读

时序约束中的 set_input_delay/set_output_delay 约束一直是一个难点,无论是概念、约束值的计算,还是最终的路径分析,每一次都要费一番脑子。Vivado为方便用户创建输入输出接口的约束,整理出了一套非常实用的InputDelay/Output Delay Constraints Language Templates。只需根据接口信号的特征匹配到对应的 template 分类,就可以轻松套用模板中的公式创建约束。

本文将通过3个例子来展示,如何精确找到匹配的 template。

01 Input Delay/Output Delay Constraints Language Template

首先来介绍下 Vivado 的 language Template。在 Vivado GUI 界面下,Tools 菜单里即可打开 Language Template。下图红框部分即 InputDelay/Output Delay Constraints 部分的模板

pYYBAGGYH_SAOI_fAAPHF3eoQbs200.png

02 模板分类目录中的关键字

1. System Synchronous(系统同步)和 Source Synchronous(源同步)

System Synchronous:两个 device 之间进行通信时,使用一个共用时钟,用于数据发送和接收。

pYYBAGGYH_aAE8rTAABc-XyNwP0096.png

Source Synchronous:两个 device 间进行通信时,发送端生成一个伴随发送数据的时钟信号。接收端利用该随路时钟进行数据接收。

poYBAGGYH_eAd__7AABZz5yfVHI887.png

2. SDR 和 DDR

SDR:singledata rate。一个时钟周期只传输一个 data。

poYBAGGYH_iAQ5jbAAAlMfPFWIU090.png

DDR:doubledata rate。一个时钟周期传输两个 data。

pYYBAGGYH_mAAsOwAAAtHqrJK_k133.png

3. Center-Aligned 和 Edge-Aligned

Center-Aligned 中心对齐,指时钟的采样沿 (capture edge) 处于对应数据有效窗口的中心位置附近。

poYBAGGYH_qAZ6ieAAAQDcPq_R8498.png

Edge-Aligned 边沿对齐,指时钟的采样沿处于对应数据的起始或结束位置附近.

pYYBAGGYH_uAJUr1AAASWCF1I0E042.png

03 Template的内容

我们以"InputDelay Constraints -> Source Synchronous -> Center-Aligned -> SDR, Rising Edge" 模板为例,看看模板的具体内容。

poYBAGGYH_2AJnqMAAGMhIDFpnY728.png

每个模板开头都有个波形图,描述这个模板对应的接口 data 与 clock 之间的时序关系。后面我们会讲,这个时序图将是精准匹配模板的关键。

波形图里标示的参数 dv_bre,dv_are,是用来代入约束模板里面的公式计算 -max 和 -min 的约束值。因此匹配了正确的模板,确定了波形图里的参数值,就可以套用公式完成约束的创建。

04 匹配模板的法宝 - 波形图

那么问题来了,去哪里找接口信号的波形图?

模板里用来计算的参数如何确定呢?

答案: 对端器件的 Datasheet

Inputdelay 和 output delay 约束提供给 Vivado工具的信息,是 FPGA 外部电路上的时序数据。这部分数据跟 FPGA 内部电路上的时序信息(这部分工具已知)相结合才能完整地分析整条路径是否满足终点器件的建立时间和保持时间。

Inputdelay 约束的创建依赖 FPGA 上游器件的 Datasheet;Output delay 约束的创建依赖下游器件的 Datasheet。

我们以 LTC2000A-11 DAC 器件的 Datasheet 为例:https://www.analog.com/media/en/technical-documentation/data-sheets/2000...

我们需要的波形图通常在 Datasheet 的 Timing Diagram 部分,而用来计算的参数通常在Timing Characteristics 部分。

pYYBAGGYH_-AZbV8AAS7t8EI4z4750.png

对于前面讲解的模板的三种分类目录,SystemSynchronous/Source Synchronous 以及SDR/DDR 的区分相对容易,而 Center-Aligned 和 Edge-Aligned 如何得知呢?

这就依赖于对端器件的 Datasheet 中的 Timing 波形图。

我们来看几个例子:

例一:

这是一个 SourceSynchronous 的 DDR 接口,需要约束 Dx 数据的 inputdelay,时钟为DCO。下图为上游器件 Datasheet 中的TimingDiagram,其中tDATA的范围是1.3ns~1.9ns。

pYYBAGGYIACAY8v_AAIWwtgxMmw756.png

从图中可以看出时钟采样沿大致在 Data 的中心,因此是 Center-Aligned。那么这个数据接口符合 SourceSynchronous --> Center-Aligned --> DDR 模板。

poYBAGGYIAGAF4LYAAAX8sTTXJc474.png

这个模板需要 dv_bre 等4个参数,如何确定呢?我们只需将 Datasheet 里的原波形图做一点细化改动,就可以与模板里的波形图完美匹配了。

pYYBAGGYIAKAUy8aAABK8mhffBM487.png

tDATA 之所以是一个范围值,就是因为 data 是有“有效数据”(datavalid)和“无效数据”(阴影部分)窗口的。把原波形图画出阴影部分就一目了然了。

因此,

dv_bfe = dv_bre = tDATA_MIN = 1.3ns

dv_afe = dv_are = tDATA_MAX = (½ Period – 1.9)ns

例二、

从下面这个 Datasheet 里的波形图可以看出,这是一个 SourceSynchronous Edge-Aligned DDR 接口,需要创建 DQ 的 input delay 约束,时钟是 DQS

poYBAGGYIASAXKlYAAHsSeXpzqs533.png

这个例子比较直观,直接匹配 SourceSynchronous ->Edge-Aligned -> DDR 模板

poYBAGGYIAWAJnZTAAAYGEYRSJY507.png

其中

skew_bre = skew_bfe = ½ Period - tQH

skew_are = skew_afe = tDQSQ

例三、

这个例子也是 SourceSynchronous,是从前面的 LTC2000A-11DAC 器件的 Datasheet 中提取出来的,需要创建 DAP/N的outputdelay 约束,随路时钟是DCKI。其中t11参数为0.057ns,t12参数为-0.017ns

pYYBAGGYIAaALqUyAACgomuoAT0190.png

poYBAGGYIAiAcFkQAAR6fuYPcp8396.png

Output delay 模板的分类不同于 Inputdelay,分为 Skew Based 和 Setup/HoldBased。仔细分析模板内容不难看出,两者之间的差别是看对端器件 Datasheet 里提供的数据与时钟之间关系的参数值是 Skew 形式还是 Setup/Hold 形式

pYYBAGGYIAmALUmMAABLhFFzDM4586.png

本例中 t11,t12 是Setup/Hold值,因此匹配 SourceSynchronous -> Setup/Hold Based -> DDR 模板。

poYBAGGYIAqAYKIMAAAaLyHrr7o364.png

其中

tsu_r = tsu_f = t11

thd_r = thd_f = t12

希望通过这三个例子,能够帮助大家找到使用模板创建输入输出接口时序约束的窍门。

审核编辑:汤梓红

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

    关注

    33

    文章

    7616

    浏览量

    148377
  • 时序约束
    +关注

    关注

    1

    文章

    111

    浏览量

    13349
  • Vivado
    +关注

    关注

    18

    文章

    787

    浏览量

    65089
收藏 人收藏

    评论

    相关推荐

    VIVADO时序约束及STA基础

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

    FPGA时序约束OFFSET

    FPGA时序约束,总体来分可以分为3类,输入时序约束输出时序
    发表于 09-05 21:13

    怎么创建时序约束

    我是一个新鲜的FPGA,当我创建时序约束时,有一些东西错了。NgdBuild:455 - 逻辑网'Adc_Toplevel_Adc1 / Adc_Frm_inst / IntFrmClk_n'有多个
    发表于 06-08 10:18

    输入输出总线接口技术

      输入输出总线接口技术
    发表于 06-29 13:45 39次下载

    时序约束时序分析 ppt教程

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

    DVD视频刻录机的输入输出接口

    DVD视频刻录机的输入输出接口   输入输出接口         
    发表于 12-23 09:49 2021次阅读

    微机原理--输入输出方法及常用的接口电路

    微机原理--输入输出方法及常用的接口电路
    发表于 12-12 22:07 0次下载

    数字信号输入输出接口电路

    数字信号输入输出接口电路【更齐全】
    发表于 12-16 21:32 0次下载

    一文详解FPGA编程技巧输入输出偏移约束

    偏移约束(Offset Constraint)用来定义一个外部时钟引脚(Pad)和数据输入输出引脚之间的时序关系,这种时序关系也被称为器件上的Pad-to-Setup或Clock-to
    的头像 发表于 07-14 07:14 5092次阅读
    一文详解FPGA编程技巧<b class='flag-5'>输入输出</b>偏移<b class='flag-5'>约束</b>

    添加时序约束的技巧分析

    。 在添加全局时序约束时,需要根据时钟频率划分不同的时钟域,添加各自的周期约束;然后对输入输出端口信号添加偏移约束,对片内逻辑添加附加
    发表于 11-25 09:14 2377次阅读

    DSPs系统硬件设计5_输入输出接口

    输入输出接口类型有哪些?
    发表于 04-09 17:16 3次下载
    DSPs系统硬件设计5_<b class='flag-5'>输入输出</b><b class='flag-5'>接口</b>

    如何使用时序约束向导

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

    时序约束中如何精确找到匹配的template?

    输入输出接口约束,整理出了一套非常实用的InputDelay/Output Delay Constraints Language Templates。只需根据接口信号的特征匹配到对应
    的头像 发表于 04-10 09:38 1741次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>约束</b>中如何精确找到匹配的template?

    GPIO通用输入输出

    GPIO通用输入输出一、GPIO的功能概述用途:GPIO是通用输入输出(General Purpose I/O)的简称,主要用于工业现场需要用到数字量输入/输出的场合。例如:
    发表于 12-20 18:58 6次下载
    GPIO通用<b class='flag-5'>输入输出</b>

    使用模板创建输入输出接口时序约束窍门

    Source Synchronous:两个 device 间进行通信时,发送端生成一个伴随发送数据的时钟信号。接收端利用该随路时钟进行数据接收。
    的头像 发表于 10-26 09:53 585次阅读