Return to previous page Advance to next page
Development System Reference Guide
Chapter 22: XFLOW

Input Files

The inputs to XFLOW are a user input file, a flow file, and one or more option files.The flow file is automatically utilized when specifying a flow type - implement, tsim, config, fit, or fsim.

User Input Design File

The only required input file to XFLOW is an input design file. This design file can be an EDIF or XNF netlist, a PLD file, an NGD file, or NCD file. The following table indicates valid input files. The input file must be in one of these formats.

An input netlist file usually has a top-level module and several sub-design modules. The top-level file must be in one of the supported formats. The sub-design modules can be in other formats such as Verilog and VHDL.

Table 22_4 Valid Input Files

File Type
Syntax
Location
EDIF Netlist
*.edf
*.edn
*.edif
*.sedif

Current working directory
XNF Netlist
*.xnf
*.xtf
*.sxnf

Current working directory

PLD File
*.pld
Current working directory
NGD File
*.ngd
Current working directory
NCD File
*.ncd
Current working directory

The UCF file allows you to specify constraints independently of an input netlist file. There can only be one UCF file per design. The UCF file will be read automatically by NGDBuild if the file resides in the same directory and has the same base name as the input design file. If the UCF file must have a different base name than an input netlist file, you can modify the -uc option for NGDBuild in an option file to read the UCF file.

All other input files are specified as arguments to the options. These option files are described in the “Option Files” section.

NGD files or NCD files can also be used as input files if you want to start the flow at an intermediate point such as MAP or PAR, rather than at the beginning stage with an EDIF or XNF netlist.

Flow Files

The following subsections describe the flow file and provide an example.

Description

All designs targeted for Xilinx devices follow a flow. A flow is a sequence of programs that are automatically invoked to implement, configure, and simulate a design. For example, to prepare an FPGA design for VHDL timing simulation, run the design through ngdbuild, map, par, ngdanno, and ngd2vhdl program flow. This sample flow requires the use of the -implement and -tsim flow types.

If you select either the -implement, -fit, -config, -tsim, or -fsim flow type, XFLOW automatically invokes one of the XIlinx flow files. The following table shows which flow files are invoked for each flow type.

Table 22_5 Xilinx Flow Files

Family
Flow Name
Flow Type
Flow Phase
Programs


FPGA


fpga.flw
-implement
Implementation
ngdbuild, map, trce, par, trce
-tsim
Timing
Simulation
ngdanno, ngd2edif, ngd2ver, ngd2vhdl
-config
Configuration
bitgen

CPLD

cpld.flw
-fit
Fit
ngdbuild, hitop, taengine, hprep6
-tsim
Timing
Simulation
tsim, ngd2edif, ngd2ver, ngd2vhdl
FPGA/
CPLD
fsim.flw
-fsim
Functional
Simulation
ngdbuild, ngd2edif, ngd2ver, ngd2vhdl

Note: Invoked programs depend on which option file is used with each flow type. See the “Option Files” section for details about option files.

The flow file, which is ASCII format, contains the following information.

Following are some examples of User Command Blocks that do not work.

UserCommand
Cmdline:"ls -l *.ngo"; # doesn't handle the "*"
End UserCommand

UserCommand
Cmdline:"/bin/rm -rf $MYVAR/calc.ngo";
# doesn't handle the "$"
End UserCommand

UserCommand
Cmdline:"if ( -e *.ngo ) /bin/rm -rf *.ngo";
# doesn't hamdle the "("
End UserCommand

Flow File Example

Following is an example fpga.flw file. For the most up-to-date version of the file, see the file located in $XILINX/xilinx/data.

####################################################
## FileName: fpga.flw
##
## Flow File to run Xilinx FPGA Flow
## Version: 1.0.0
## $Header: /devl/xcs/repo/env/Jobs/Xflow/data/flowfiles/Attic/fpga.flw,v 1.1.2.2 1999/02/28 23:46:29 jayr Exp $
######################################################

ExportDir: <workdir>; # Directory to copy program outputs
ReportDir: <workdir>; # Directory to copy program reports

#
# Flow Info for Translator
#
Program ngdbuild
Flag : ENABLED;
Exports : <design>.ngd;
Reports : <design>.bld;
End Program ngdbuild

#
# Flow Info for Mapper
#
Program map
Flag: ENABLED;
Input: <design>.ngd;
Exports : <design>_map.ncd;
Reports : <design>_map.mrp;
End Program map

#
# Flow Info for Post Map Trace
#
Program post_map_trce
Flag: DISABLED;
Executable: trce;
Input: <design>_map.ncd;
Reports: <design>.twr;
End Program post_map_trce

#
# Flow Info for Place and Route
#
Program par
Flag : ENABLED;
Input: <design>_map.ncd;
Exports : <design>.ncd;
Reports: <design>.par <design>.dly, <design>.pad;
End Program par

#
# Flow Info for Post Par Trace
#
Program post_par_trce
Flag: ENABLED;
Executable: trce;
Input: <design>.ncd;
Reports: <design>.twr;
End Program post_par_trce

#
# Flow Info for Annotator
#
Program ngdanno
Flag: ENABLED;
Input: <design>.ncd;
End Program ngdanno

#
# Flow Info for EDIF Netlist Writer
#
Program ngd2edif
Flag: ENABLED;
Input: <design>.nga;
$input_extension = nga;
$simulation_output = time_sim;
Exports: $simulation_output.edn $simulation_output.xmm;
End Program ngd2edif

#
# Flow Info for Verilog Netlist Writer
#
Program ngd2ver
Flag: ENABLED;
Input: <design>.nga;
$input_extension = nga;
$simulation_output = time_sim;
Exports: $simulation_output.v $simulation_output.sdf, $simulation_output.tv, $simulation_output.pin;
End Program ngd2ver

#
# Flow Info for VHDL Netlist Writer
#
Program ngd2vhdl
Flag: ENABLED;
Input: <design>.nga;
$input_extension = nga;
$simulation_output = time_sim;
Exports: $simulation_output.vhd $simulation_output.sdf, $simulation_output.tvhd, $simulation_output.pin;
End Program ngd2vhdl

#
# Flow Info for Bitgen
#
Program bitgen
Flag: ENABLED;
Input: <design>.ncd;
Exports: <design>.bit, <design>.ll, <design>.msk, <design>.rbt;
Reports: <design>.bgn, <design>.drc;
End Program bitgen
#