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.
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.
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.
The following subsections describe the flow file and provide an example.
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.
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.
UserCommand
Cmdline: myscript.csh
End UserCommand
UserCommand
Cmdline:"printenv";
End UserCommand
UserCommand
Cmdline:"ls -ltr";
End UserCommand
UserCommand
Cmdline:"ls -l calc.ngo"; # This works if calc.ngo #exists.
# If calc.ngo does not exist, # the ls command will # return a non zero
# to xflow and xflow will # end and give an
# error message.
End UserCommand
UserCommand
Cmdline:"/home/test/xflow/userscript.csh";
End UserCommand
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
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
#