|
发表于 2011-10-25 11:14:38
|
显示全部楼层
本帖最后由 warmheard 于 2011-10-25 11:16 编辑
10.1/11.x NGDBuild - "ERROR:NgdBuild:770..."
FeedbackPrintAR# 34771 Search For Another Answer
Topic NGDBuild
Last Updated 06/01/2010
Status Active
Description
There is a black-box submodule in the design which is fed with an EDIF/NGC netlist. The following errors and warnings are issued during Translate:
"ERROR:NgdBuild:770 - IBUF 'b_IBUF' and IBUF 'b_ibuf' on net 'b_IBUF' are lined up in series. Buffers of the same direction cannot be placed in series.
WARNING:NgdBuild:463 - input pad net 'b_IBUF' has an illegal input buffer
ERROR:NgdBuild:925 - input net 'b_IBUF' is connected to the incorrect side of buffer(s):
pin O on block b_IBUF with type IBUF
ERROR:NgdBuild:924 - input pad net 'clk_BUFGP' is driving non-buffer primitives:
pin C on block h with type FDR, pin C on block g with type FD, pin O on block clk_BUFGP/BUFG with type BUFG
ERROR:NgdBuild:809 - output pad net 'e' has an illegal load:
pin I1 on block Mxor_g_xor0000_Result1 with type LUT2
ERROR:NgdBuild:455 - logical net 'h' has multiple driver(s):
pin Q on block h with type FDR, pin PAD on block h.PAD with type PAD"
How can I resolve these errors?
Solution
These errors are issued because the submodule EDIF/NGC netlist contains IBUFs/OBUFs. XST also adds IBUFs and OBUFs to the top level, so that they are lined up or the pads are driving/being driven by non-buffer components.
When an EDIF/NGC netlist is used as a submodule of another design, the following conditions must be met:
If the input/output ports of the submodule are connected to the top module ports directly, like port1 in the following figure, the IBUFs/OBUFs can be put in the submodule, but the XST property "Read Cores" has to be checked. Then, XST will read the netlist in the project directory or a location specified in "Cores Search Directories" and will not add extra IBUFs/OBUFs on these top level ports.
If the input/output ports of the submodule are NOT connected to the top module ports directly, like port2 in the following figure, the IBUFs/OBUFs must not be put in the submodule.
The following are some solutions to this problem.
Disable IBUF/OBUF insertion when you generate the submodule netlist. Add all IBUFs/OBUFs to the top level.
For XST, go to Synthesis Properties -> Xilinx Specific Options -> uncheck "Add I/O Buffers"
For Synplify Pro, go to Implementation Options -> Device tab -> check "Disable I/O Insertion"
Selectively disable IBUF/OBUF insertion on the input/output ports that are NOT connected to the top module ports directly.
For XST, use "buffer_type" constraint. Please refer to XST User Guide.
For Synplify Pro, refer to (Xilinx Answer 4508).
If the IBUF/OBUFs are instantiated in the submodule, disabling IBUF/OBUF insertion does not remove the buffers from the submodule. If this is the case, remove the IBUF/OBUFs instantaiation from the submodule and instantiate them in the top level. |
|