AR# 34771

10.1/11.x NGDBuild - "ERROR:NgdBuild:770..."

描述

设计中有一个黑盒子子模块可获得 EDIF/NGC 网表。转换期间发出以下错误和警告:

"错误:NgdBuild:770 - IBUF 'b_IBUF' 和 IBUF 'b_ibuf' 在网 'b_IBUF' 上为串行。相同方向的缓冲不能串行放置。
警告:NgdBuild:463 –输入管脚网 'b_IBUF' 有非法输入缓冲
错误:NgdBuild:925 –输入网 'b_IBUF' 连接到缓冲不正确的一侧:
b_IBUF 模块上的引脚 O 类型 IBUF
错误:NgdBuild:924 - 输入管脚网 'clk_BUFGP' 由非缓冲原语驱动:
h 模块上的引脚 C 类型 FDR,g 模块上的引脚 C 类型 FD,clk_BUFGP/BUFG 模块上的引脚 O 类型 BUFG
错误:NgdBuild:809 –输出管脚网 'e' 有非法负载:
Mxor_g_xor0000_Result1 模块上的引脚 I1类型 LUT2
错误:NgdBuild:455 – 逻辑网 'h' 有多个驱动器:
h 模块上的引脚 Q 类型 FDR,h.PAD 模块上的引脚 PAD 类型 PAD

我如何解决这些错误

解决方案

发出这些错误是因为子模块 EDIF/NGC 网表包含 IBUF/OBUF。此外,XST 还向顶层添加 IBUF 和 OBUF,使其排成一行,管脚则驱动或被非缓冲组件驱动。

EDIF/NGC 网表可用作另一设计的子模块时,应满足以下条件:

  • 如果子模块的输入/输出端口直接连接到顶部模块端口,如下图的端口 1,那么 IBUF/OBUF可被放在子模块中,但 XST 的“Read Cores”属性必须选中。随后 XST 将读取项目目录中的网表或“Cores Search Directories”指定的位置,并且不会在顶层端口添加额外的 IBUF/OBUF。
  • 如果子模块的输入/输出端口不直接连接到顶部模块端口,如下图的端口 2,那么 IBUF/OBUF不得放入子模块。

以下就此问题给出了一些解决方案。

  1. 生成子模块网表时禁用 IBUF/OBUF 插入。将所有 IBUF/OBUF 添加到顶层。
    • 对于 XST 而言,转到 Synthesis Properties -> Xilinx Specific Options ->取消选中“Add I/O Buffers”选择。
    • 对于 Synplify Pro 而言,转到 Implementation Options -> Device tab ->选中“Disable I/O Insertion”。
  2. 对于不直接连接到顶层模块端口的输入/输出端口选择性地禁用 IBUF/OBUF 插入。
    • 对于 XST 而言,使用“buffer_type”约束。敬请参见XST用户指南。
    • 对于 Synplify Pro 而言,敬请参见(Xilinx 答复 4508)
  3. 如果 IBUF/OBUF 在子模块中被实例化,禁用 IBUF/OBUF 插入不会从子模块中删除缓冲。如果出现这种情况,请从子模块中删除 IBUF/OBUF 实例化,并在顶层对其实例化。

链接问答记录

相关答复记录

AR# 34771
日期 03/17/2014
状态 Active
Type 错误信息
Tools More Less