Xilinx 8.2i Life Jacket User Manual


 
386 www.xilinx.com Development System Reference Guide
Appendix :
R
Bus Matching
When NGDBuild encounters an instance of one netlist within another netlist, it requires
that each pin specified on the upper-level instance match to a pin (or port) on the lower-
level netlist. Two pins must have exactly the same name in order to be matched. This
requirement applies to all FPGAs and CPLDs supported for NGDBuild.
If the interface between the two netlists uses bused pins, these pins are expanded into
scalar pins before any pin matching occurs. For example, the pin A[7:0] might be expanded
into 8 pins namedA[7] through A[0]. If both netlists use the same nomenclature (that is, the
same index delimiter characters) when expanding the bused pin, the scalar pin names will
match exactly. However, if the two netlists were created by different vendors and different
delimiters are used, the resulting scalar pin names do not match exactly.
In cases where the scalar pin names do not match exactly, NGDBuild analyzes the pin
names in both netlists and attempts to identify names that resulted from the expansion of
bused pins. When it identifies a bus-expanded pin name, it tries several other bus-naming
conventions to find a match in the other netlist so it can merge the two netlists. For
example, if it finds a pin named A(3) in one netlist, it looks for pins named A(3), A[3], A<3>
or A3 in the other netlist.
The following table lists the bus naming conventions understood by NGDBuild.
If your third-party netlist writer allows you to specify the bus-naming convention, use one
of the conventions shown in the preceding table to avoid “pin mismatch” errors during
NGDBuild. If your third-party EDIF writer preserves bus pins using the EDIF “array”
construct, the bus pins are expanded by EDIF2NGD using parentheses, which is one of the
supported naming conventions.
Note:
NGDBuild support for bused pins is limited to this understanding of different naming
conventions. It is not able to merge together two netlists if a bused pin has different indices between
the two files. For example, it cannot match A[7:0] in one netlist to A[15:8] in another.
In the Xilinx UnifiedPro library for Virtex, some of the pins on the block RAM primitives
are bused. If your third-party netlist writer uses one of the bus naming conventions listed
in the preceding table or uses the EDIF array construct, these primitives are recognized
properly by NGDBuild. The use of any other naming convention may result in an
“unexpanded block” error during NGDBuild.
Netlist Launcher (Netlister)
The Netlist Launcher, which is part of NGDBuild, translates an EDIF netlist to an NGO file.
NGDBuild uses this NGO file to create an NGD file.
Note:
The NGC netlist file does not require Netlist Launcher processing. It is equivalent to an NGO
file. Also, it contains its own constraints information and cannot be processed with an NCF file.
Bus Naming Conventions
Naming Convention Example
busname(index) DI(3)
busname<index> DI<3>
busname[index] DI[3]
busnameindex DI3