当前位置: 首页 > news >正文

详解set_output_delay的用法

set_output_delay,这个约束描述的是fpga的输出管脚的数据,相对于参考时钟有效沿的延迟。这个描述其实很不具体,缺少细节。早先我就对这个约束一直很困惑,因为根据名字,是设置数据输出的延迟,比如fpga一个输出管脚输出数据到下游器件,假设下游器件的Tsu要求是3ns,而数据的参考时钟周期是10ns,那就表示我fpga输出最大延迟要小于7ns,那不是应该写成这样:

  • set_output_delay -clock sysclk -max 7 [get_ports dout]

但是实际写的时候,我们是这样写的:

  • set_output_delay -clock sysclk -max 3 [get_ports dout]

为啥???其实上面我们的理解并没有问题,确实是fpga内部延迟最大不能超过7ns,但是,给set_output_delay用的时候却不是这样用。因为这个约束是通过相反的一面去告诉工具输出的延迟要求,也就是我只告诉你,我这个下游器件的时间要求是多少,你编译工具内部我不管,你自己去搞,反正你最终满足我要求就行。就好像我告诉你我这边要求你2点钟到达,你具体是几点钟出门,打车还是坐地铁,你自己决定,反正我就告诉你我这边的要求是2点钟。也就是这个约束语句是通过外部时间要求来约束fpga内部时序的。参数值指的是外部的时间,而不是内部的。

我们也可以从建立时间要求的公式上来理解一下:

  • Tco + Tdata + Tpcb_ext <= Tclock - Tsu_ext
    等效为:
  • Tco + Tdata + Tpcb_ext + Tsu_ext <= Tclock
    其中:
  • Tdata是fpga内部数据传播延时,包括走线和组合逻辑带来的延迟
  • Tco是输出寄存器的延迟
  • Tpcb_ext是fpga输出管脚到下游芯片管脚的走线延迟
  • Tsu_ext是下游芯片的建立时间要求

其实公式里就能看出,fpga是管不了Tpcb_ext + Tsu_ext这两个值的,也是不知道的,但是内部的Tco + Tdata这俩它能管的了,所以就通过约束,告诉工具Tpcb_ext + Tsu_ext的值,然后工具为了满足公式要求的时序要求,就会内部去各种优化,去达到这个条件。所以我们通常写set_output_delay约束时,一般就是这个表达式:

  • set_output_delay -clock xxx -max (Tpcb_ext + Tsu_ext) [get_ports xxx]

说完了max的部分,再来说min的部分,我们知道保持时间的要求是:

  • Tco + Tdata + Tpcb_ext >= Th_ext
    但是工具内部计算的式子其实是这个:至于为啥要变换下我也不知道
  • Tco + Tdata + Tpcb_ext - Th_ext >= 0

同样的道理,我们只需要告诉工具外部的时间要求,内部由工具自己安排。外部的时间在这里就是Tpcb_ext - Th_ext,所以min的部分我们通常这样写:

  • set_output_delay -clock xxx -min (Tpcb_ext - Th_ext) [get_ports xxx]

vivado的约束工具在约束output delay时,有个图,和我们上面的论述一致:
image

ug949手册里也有关于output_delay的解释:
image
这里它考虑了在系统时钟情况下,时钟不同路径下的延迟,也就是公式里多了Dclock_to_FPGA - Dclock_to_ExtDev,在pcb板上如果时钟和数据路径是长短比较一致的情况下,比如随路时钟那种,可以忽略pcb的延迟:
image

这里它解释了为什么设置最小延迟的时候,经常是个负值,因为fpga内部延迟一般都很小,需要外部补偿延迟,所以外部为负数就是告诉fpga外部的不够用,你需要自己内部再加点延迟,好整体满足延迟大于0的要求。

所以,如果我们不对输出口进行任何的output_delay的约束,是欠约束还是过约束了呢?答案是欠约束,因为不写,默认output_delay就是0,对于max来说,外部设置的越大,就是表示fpga输出的数据要早到,也就是fpga要尽量压缩内部的延迟,所以设置为0,对fpga来说就当然就是容易干的事了。而对min来说,负的数值越高,内部要补偿的就越高,不设置就是0。内部啥也不用动,也是欠约束了。

参:

  • https://www.cnblogs.com/freshair_cnblog/archive/2012/09/12/2681060.html
  • https://zhuanlan.zhihu.com/p/567794297
  • https://adaptivesupport.amd.com/s/article/1226728?language=zh_CN
  • https://blog.csdn.net/icxiaoge/article/details/132351674
  • https://www.01signal.com/zh/vendor-specific/xilinx/vivado-timing-report-io/
http://www.gsyq.cn/news/52096.html

相关文章:

  • 2025杭州最大留学中介公司是哪家
  • 每位工程师都会遇到的 10 个 Kubernetes 问题(及解决方法)【转】
  • 权重矩阵初始化
  • 2025杭州最大留学中介公司在哪里
  • 2025出国留学机构大全排名榜
  • 2025成都有哪些留学中介机构比较好
  • 说说Redis的集群方案?主从复制、哨兵、Cluster集群的区别和适用场景【转】
  • 热门十大跨境电商ERP盘点!做跨境电商的必备工具!
  • 2025年欧式门窗定制厂家权威推荐:别墅平开窗/手摇平开窗/智能窗源头厂家精选
  • 2025 最新支座厂家推荐!橡胶 / 桥梁 / 国标 / 滑板 / 固定 / 弹性 / 盆式 / 减震支座品牌榜单,深度解析优质厂家实力与产品特色
  • xinyoudui 兼职时间
  • SBD1DF20V1H-ASEMI可直接替代安世PMEG2010AEH
  • 2025成都最好的留学机构是哪家公司
  • 2025年悬浮门企业综合实力排行榜:专业选购指南与行业趋势分析
  • 2025年优质卧式蒸煮机公司权威推荐排行榜
  • 64位linux内存
  • 2025年塑料合金板材订做厂家综合评测:汽车外饰板/真空吸塑板/ABS吸塑板优质供应商精选
  • 2025年镀锌方管定做厂家权威推荐:镀锌钢管/国标H型钢/不锈钢板源头厂家精选
  • Unity的协程(Coroutine)是什么?
  • Spoon9.1打开kettle文件报lock错误解决方法
  • 2025年北京智能外呼系统公司权威评测:外呼电销机器人/呼叫中心系统/电销外呼软件源头服务商精选
  • MyEMS 五层架构拆解:从毫秒级采集到 AI 决策,能源数据如何实现全链路可控?
  • 2025年江苏车辆防撞雷达系统服务综合评估:车辆预警防撞系统/车辆防撞系统材料/车辆防撞预警监测源头服务商精选
  • [Python刷题记录]-二叉树的中序遍历-二叉树-简单
  • 2025年长沙心理咨询机构专业度排名,线上/在线公司口碑推荐
  • 2025油皮必囤面霜清单:构象编织霜领衔,控油抗老/补水不黏腻/敏肌适配款怎么选
  • 搭建环境:基于clickhouse的流式数据处理最小系统 - dalifornia
  • 干皮救星面霜榜单2025:高保湿抗老品牌全解析,深滋润强修护不踩雷
  • 2025 年 11 月铝合金门窗厂家推荐排行榜,断桥门窗,断桥推拉门窗,系统门窗,金属门窗,阳台门窗,封阳台门窗,平开门窗,推拉门窗,折叠门窗公司推荐
  • 2025 年 11 月不锈钢珠、碳钢珠厂家推荐排行榜,316/304/420/440不锈钢珠,轴承铬钢珠,高精度碳钢珠,弹簧定位钢珠公司精选