news 2026/7/6 2:34:39

【Vivado错误日志】[DRC REQP-1741]IDELAY3 drivers invalid load :IDELAY3 DATAOUT pin may not drive a BUFG*

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Vivado错误日志】[DRC REQP-1741]IDELAY3 drivers invalid load :IDELAY3 DATAOUT pin may not drive a BUFG*

问题描述:

我把7020的工程移植到XCZU19EG上用Vivado编译时报错:

[DRC REQP-1741] IDELAY3 drivers invalid load :IDELAY3 data_progress_U0/u_delay_rxd DATAOUT pin(net: data_progress_U0/data_clk)may not drive a BUFG*

原因:

除了时钟信号外,任何输入信号都可以使用 IDELAYE3 原语进行延迟,然后直接转发到设备逻辑,或者使用输入/输出互连(IOI)内的单数据速率(SDR)时钟或双数据速率(DDR)时钟在简单的触发器、IDDR 或 ISERDESE3 中进行寄存。不应使用 IDELAYE3 延迟时钟,因为 IDELAY 无法直接连接到全局时钟缓冲器。如果必须延迟时钟,使用 MMCM 或 PLL 进行时钟生成,并使用精细相位偏移功能延迟时钟。

IDDELAYE3 原语包含一个 512 级延迟线。请参阅 UltraScale 数据表中的抽头分辨率。每个单独的抽头都是未校准的。但是,用于校准延迟线的逻辑在 IDELAYCTRL 组件中可用。IDDELAYE3 可以在两种模式下使用,即计数模式和时间模式。

XCZU19EG是Zynq UltraScale+ MPSoC FPGA,相比于XC7Z020底层约束更加严格,所以在XC7Z020上编译时不会报错,XC7Z020允许使用IDELAY的输出驱动BUFG,但是XCZU19EG不能。

解决方法:

1、如果想用DATAOUT驱动BUFG、MMCM或PLL,必须插入一个基本的LUT1,如下所示:

(*dont_touch="yes")LUT1#(.INIT(2'b01))LUT1_Inst(.O(to_BUFG_orMMCM_orPLL),.I0(from_DATAOUT));

根据下表确定INIT值(不同输入的LUT,INIT位宽也不同,例如LUT3的INIT值位宽为8bit):

作用INIT值例化
信号直通(输出=输入)INIT = 2’b01LUT1 #(.INIT(2’h1))
信号取反(输出=反相)INIT = 2’b10LUT1 #(.INIT(2’h2))
生成逻辑0(输出=0)INIT = 2’b00LUT1 #(.INIT(2’h0))
生成逻辑1(输出=1)INIT = 2’b11LUT1 #(.INIT(2’h3))

以上方法亲测有效

2、使用 MMCM 或 PLL 进行时钟生成,并使用精细相位偏移功能延迟时钟。
参考:https://adaptivesupport.amd.com/s/question/0D52E00006hpRavSAE/idelaye3-output-cannot-drive-a-bufg-in-ultrascale?language=en_US

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 1:37:42

告别课程论文 “凑字焦虑”!宏智树 AI 带你写出高分学术范

作为深耕论文写作科普的教育博主,后台每天都被大学生的课程论文烦恼刷屏:“选题太泛被打回”“文献东拼西凑没逻辑”“格式错漏被导师批评”…… 课程论文看似是 “小作业”,实则是学术写作的入门试炼,写不好不仅影响课程成绩&…

作者头像 李华