前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对于输入/输出路径什么场合需要用set_multicycle_path?

对于输入/输出路径什么场合需要用set_multicycle_path?

作者头像
Lauren的FPGA
发布2023-09-20 08:34:32
7560
发布2023-09-20 08:34:32
举报
文章被收录于专栏:Lauren的FPGA

命令set_multicycle_path常用来约束放松路径的约束。通常情况下,这种路径具有一个典型的特征:数据多个周期翻转一次,如下图所示。因此,我们把这种路径称为多周期路径(FPGA设计中更多的是单周期路径,每个周期数据均翻转)。

一般情况下,多周期路径约束的对象都是FPGA内部路径,路径所包含的逻辑单元也都是FPGA内部单元如触发器、BRAM或DSP等。但有时在片间接口使用set_input_delay和set_output_delay约束时,也会用到set_multicycle_path。这里我们就来讨论这种情形。

我们先从系统级角度看一下FPGA设计存在的4类时序路径,如下图所示。这4类路径包括:上游芯片到FPGA管脚(用set_input_delay约束)、FPGA内部路径(用create_clock约束)、FPGA管脚到下游芯片(用set_output_delay约束)和FPGA管脚到FPGA管脚(用set_max_delay约束)。就前三条路径而言,如果把上游芯片、FPGA芯片和下游芯片作为一个整体看待,我们就会发现这三条路径本质上是一类路径,起点单元和终点单元都是触发器。只是触发器可能在FPGA外部而已。正因此,凡是适合于FPGA内部路径的多周期路径约束情形也适合于接口多周期路径约束情形。同时,也能看出Vivado的这种系统级的时序分析引擎对接口时序约束极为便利。

情形1:数据每多个时钟周期翻转一次

如下图所示时序波形,数据每两个时钟周期翻转一次。

如果数据是由上游芯片发送给FPGA,那么就需要用set_input_delay结合set_multicycle_path一起对接口路径进行约束,如下图所示。这里最后两行使用了set_multicycle_path,一个针对建立时间,一个针对保持时间。

如果数据是从FPGA发送给下游芯片,那么就需要用set_output_delay结合set_multicycle_path一起对接口路径进行约束,如下图所示。

情形2:捕获时钟和发送时钟同频但有相差

如下图所示,发起时钟和捕获时钟同频但不同相。默认情况下,Vivado会选择两个时钟最为接近的边沿作为发起沿和捕获沿,如图中的蓝色箭头所示。显然,这种情况下,时序约束过紧且不符实际。这就要通过set_multicycle_path告诉工具真正的捕获沿是在2号标记处。

如果该路径存在于FPGA输入接口处,那么可以采用set_input_delay结合set_multicycle_path一起约束,如下图所示。

如果该路径存在于FPGA输出接口处的源同步设计,那么可以采用set_output_delay结合set_multicycle_path一起约束,如下图所示。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-14 08:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FPGA技术驿站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档