当前位置: 首页 > 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.jsqmd.com/news/42689/

相关文章:

  • Educational Codeforces Round 184 部分题解
  • 2025杭州最大留学中介公司是哪家
  • 每位工程师都会遇到的 10 个 Kubernetes 问题(及解决方法)【转】
  • 2025出国留学机构怎么样
  • 本年度靠谱的运动场馆装修设计公司推荐
  • 2025成都正规的出国留学中介
  • 二十四、企业落地异地多活、异地容灾架构
  • AI 十大论文精讲(四):0.01% 参数实现全量大模型微调效果?LoRA 的低秩适配之谜
  • 2025 最新铣头厂家推荐!直角 / 双向 / 万向 / 万能 / 加工中心侧 / 加长 / CNC 侧 / BT50 侧 / 90 度铣头优质厂家品牌排行榜及选型指南
  • uni-app 无法实现全局 Toast?这个方法做到了!
  • 权重矩阵初始化
  • 2025较好的留学机构排名前十
  • 2025杭州最大留学中介公司在哪里
  • 2025出国留学机构大全排名榜
  • 2025成都有哪些留学中介机构比较好
  • 使用 x11vnc 与 systemd 实现持久化 VNC 远程桌面服务
  • 上海外贸独立站公司十大推荐排行榜,谷歌独立站制作公司,谷歌独立站制作公司推荐,谷歌SEO公司排名前十,上海谷歌SEO公司十大排名:华企博网推荐榜
  • 2025 最新珩磨管厂家推荐!珩磨管 / 活塞杆 / 合金管 / 精密无缝管优质品牌排行榜,含 20#45#/304 材质数控珩磨工艺企业权威推荐
  • 2025上海外贸快车公司十大排名,上海外贸独立站制作公司排行,谷歌SEO公司十大排名,独立站源头公司口碑推荐榜,谷歌独立站公司推荐榜:华企博网评选十大优质服务商
  • 2025年口碑炸裂的湿敷水有哪些?抗初老+匀净透亮,成分党认准这几款
  • 4、进程信号
  • 说说Redis的集群方案?主从复制、哨兵、Cluster集群的区别和适用场景【转】
  • 2025年消波块钢模厂家推荐榜单Top10:行业权威解析与选择指南
  • 目前口碑好的消波块生产厂家推荐
  • 2025年国内消波块钢模厂家综合实力排行榜:添元水泥领跑行业
  • 2025年污水管网检测公司权威推荐榜单:污水管网闭水检测/管网疏通检测/管网改造修复源头公司精选
  • 2025年欧式门窗定制厂家权威推荐:别墅平开窗/手摇平开窗/智能窗源头厂家精选
  • Redis安装指导
  • amd linux驱动
  • aio linux