Search code examples
vhdlxilinxsynthesisxilinx-isenetlist

How can I merge several Xilinx NGC netlists to an new netlist


I'm using XST (synthesis tool in the Xilinx ISE 14.7 suite) to compile VHDL source files to a netlist (*.ngc file).

My code uses several Xilinx IP Cores like ChipScope ILAs for debugging, which are also pre-synthesized as ngc files. I would like to ship only one ngc file to our costumer. It's a proof of concept design, so he should see a simple interface:
- our IPCore + VHDL component
- his ChipScope ICON IP Core / netlist with 5 open ports for our IP Core

How can I merge these ngc files info one ngc file?

The ISE design flow uses "Translate" to merge all netlists together and emits a ngd file, which is the input for the "Map" step.


Solution

  • Internal debates on how easy it was to find the answer aside there's some cause for propagating the question and it's answer in Stackoverflow. The idea being Stackoverflow is a search resource before someone asks the same question again, striving to be a higher quality resource in general than found by searching the Internet at large.

    While googling merge .ngc Xilinx I found the very first hit lead to an answer on the Xilinx web site (See NGC File include. NGC file problem asking how to merge Native Generic Compiler (ngc) netlists, the answer leading to a now dated v 1.2 UG628 Command Line Tools User Guide, the latest is v 14.7 available only through that version's Help Center, it doesn't show up in on line searches).

    So there's a command line tool named ngcbuild that's described as capable of merging .ngc netlists in Chapter 24 of the Command Line Tools User Guide:

    The NGCBuild utility:

    • Compiles multiple source netlists (EDIF and NGC files) into a single NGC file that can be delivered as an atomic entity (also knownas “incremental linkage”).

    • Annotates a User Constraints File (UCF) onto an existing netlist or collection of netlists

    We look in the linked Xilinx support item and we see the presumption that merging netlists is done for ChipScope just as Paebbel's asks. This is a common thread through most of the uses for merging .ngc netlists.

    This is supported in the ChipScope Pro Software and User Guide, (UG029, v 14.3) which demonstrates usage. See the section Edit CDC Project Step:

    The Edit CDC Project step of the command line ChipScope Pro Core Inserter flow is used to bring up the ChipScope Pro Core Inserter GUI to edit an existing CDC project (see Figure 3-3). The ngcbuild tool is called during this step with the specified arguments following the -ngcbuild argument. The ngcbuild tool combines all netlists associated with the design into a single complete NGC netlist file. This allows the ChipScope Pro Core Inserter tool to provide full debug access to all levels and nodes in the design.

    (Without invoking ChipScope repeatedly.)

    It certainly appears to be the right tool for what the question asks, and the usage of Chipscope implies it's need in a lot of cases according to the googling results.