Answers Database
M1.4: How to setup and debug Multi-Pass Place and Route/Turns Engine/Networked PAR
Record #1644
Product Family: Software
Product Line: Merged Core
Problem Title:
M1.4: How to setup and debug Multi-Pass Place and Route/Turns
Engine/Networked PAR
Problem Description:
Keywords: par, multi, pass, turns, engine, implementation, place, route
Urgency: Hot
General Description:
Multi-Pass Place and Route (MPPR) is a feature that allows you
run multiple iterations of Place and Route (PAR) on a single
machine (single node MPPR), or on multiple workstations
(multi-node MPPR).
This feature is useful for finding place and route solutions
for designs that are close to meeting timespecs or are
finishing with only a few unroutes.
Solution 1:
INPUT FILES:
o Single node MPPR requires only one input file: a
mapped <design>.ncd.
o Multi-node MPPR requires 2 input files: a mapped <design>.ncd,
and a nodelist file. A nodelist file is user-created ASCII file
that lists the workstation names.
HOMOGENEOUS/HETEROGENEOUS NETWORKS:
o Multi-node MPPR can run on homogenous networks: all SunOS, all
Solaris, or all HP-UX.
o Multi-node MPPR can also run on heterogeneous networks: mix of SunOS,
Solaris, and HP-UX. The Xilinx software and license environment must
be set appropriately in the .cshrc file for each platform on which
you intend to run. See the sample .cshrc file below which sets the
environment differently based on the platform being used. This is
necessary because the remote nodes read their environment variables
from the .cshrc, they do not receive them from the launching node.
LIMITATIONS:
o MPPR can only operate on Xilinx FPGA families: XC3000a, XC4000e,
XC4000ex, XC4000XL, XC5200 and Spartan. It can not operate on
CPLD's: XC7000, XC9500.
o Although single node MPPR can operate on any platform in the M1
release, multi-node MPPR can only operate on UNIX workstations.
o Each node uses a single license while running. The maximum number
of nodes that can operate in parallel is limited to the number of
licenses available.
o Each run targets the same part, and uses the same algorithms and
options. Only the starting point, or the cost table entry, is
varied.
ENVIRONMENT VARIABLES:
o PAR_AUTOMNTPT - Multi-node MPPR uses network path names to access
files. By default, PAR builds a network path to specified input
files assuming an auto-mounted network using /net/<machine name> as
the mount point. For example, a local path name to a file may be
/usr/ivan/designs/cpu.ncd. PAR will by default build a network path
name of /net/<machine name>/usr/ivan/designs/cpu.ncd.
If the network is auto-mounted, but does not use /net/<machine name>
as the auto-mount point, the PAR_AUTOMNTPT variable can be used to
set the network auto-mount point. For a network that uses
/xyz/<machine name> as the auto-mount point, the PAR_AUTOMNTPT
variable should be set to "xyz".
For hard-mounted networks, the default network paths generated by PAR
will not be valid. In this case, PAR must be run from a location
where the directory path is valid on all remote machines being used.
The PAR_AUTOMNTPT variable must be set to "/". This tells PAR not to
build auto-mount paths on remote machines, but to use $PWD instead.
An alternative is to set PAR_AUTOMNTPT to "" and use full paths to
all files specified on the command line.
o PAR_AUTOMNTTMPPT - Most networks use /tmp_mnt as a temporary mount
point. If your network uses a temporary mount point by a different
name, like /t_mnt, then you must set the PAR_AUTOMNTTMPPT variable
to the temporary mount point name; in this example you would set
PAR_AUTOMNTTMPPT to /t_mnt. The default value for PAR_AUTOMNTTMPPT
is /tmp_mnt. This variable only needs to be set for auto-mounted
networks that do not use /tmp_mnt as the temporary mount point.
o Multi-node MPPR logs onto a node and then invokes par. The
environment variables on the node are read from the .cshrc (or
equivalent), they are not passed from the host to the node.
Therefore all Xilinx environement variables must be defined in the
.cshrc, otherwise the par process on the node will not be able to
find the software or the licenses.
DOCUMENTATION:
o The online documenation discusses MPPR further. From the command line
type dtext, to start the dynatext browser. Make the following
selections: Development Systems Reference Guide-> Chapter 10 - PAR ->
Turns Engine (PAR Multi-Tasking Option).
INVOCATION:
o Command Line =>
{The 2 lines following represent 1 command}
par -m <nodelist file> -n <# of iterations>
-s <# of iterations to save> <mapped desgin>.ncd <output
directory>.dir
-m <nodelist file> => Use only for multi-node MPPR. Omit
for single node MPPR. Use absolute
local path name.
-n <# of iterations> => Specifies number of Place and Route
passes.
-s <# of iterations to save> => Only the best -s results are saved.
<mapped design>.ncd => Input ncd file.
<output directory>.dir => Directory where the best -s results
are saved. Files include placed and
routed ncd, summary timing reports
(.dly), pinout files (.pad), and log
files (.par).
o Graphical User Interface =>
=> Open the design manager: dsgnmgr.
=> Open a project in the design manager.
=> Select a version. MPPR will not be available if a
revision is selected.
=> Select Implement->FPGA Multi-Pass Place and Route.
=> In the pop up dialog, enter the number of iterations to run
and to save. The starting strategy determines the initial point
for the algorithms. As each PAR process is initiated, its
starting strategy is incremented by 1. Varying the starting
strategy produces varying routing and timing results; it is
impossible to predict which starting strategies will produce
the best results. It is a "Try and See" variable.
For single node MPPR, leave the nodelist field blank, for
multi-node MPPR enter the full path name to the nodelist file.
DEBUG:
o With multi-node MPPR you may receive messages from the login process.
The problems are either network related environment variable related.
Network: You may not be able to logon to the machines listed
in the nodelist file.
Try to ping the nodes - ping <machine name>. You
should get a message "machine is alive". ping should
also be in your path (UNIX cmd: which ping). If
returns packet information, then you should confirm
that ping was run with no options. Ping must return
the message "machine is alive" for MPPR to work.
Try to logon to the nodes - rsh <machine name>. You
should be able to logon to the machine. If you can
not, make sure rsh is in your path (UNIX cmd: which
rsh). If rsh is in your path, but you still can not
logon, contact your network administrator.
Try launch par on node -
rsh <machine name> /bin/sh -c par
This is the same command that multi-node MPPR uses to
launch par. If this command is successful, everything
is setup correctly for <machine name> node.
Environment: Check the environment on the nodes - Logon to the
problematic node (UNIX cmd: rsh <machine name>).
Check the $XILINX, $LD_LIBRARY_PATH, and $path
variable (UNIX cmd: echo $<variable name>). If these
variables aren't set correctly, then check to make sure
these variables are defined in your .cshrc file. Note,
some, but not all, errors in reading the .cshrc may
prevent the rest of the file from being read; these
errors may need to be corrected before the XILINX
environment variables in the .cshrc are read.
/bin/sh: par not found - This message indicates that
the environment in the .cshrc is not being correctly
read by the node.
SAMPLE FILES:
-------------------------- .cshrc file segment -------------------------------
# This is a comment.
# This setup enables using multi-node MPPR with homogeneous and heterogenous net
works:
# Solaris, SunOS, and HP-UX. When a login occurs, the bintype variable is
# set to the node platform, which then points the Xilinx environment variables
# to the platform specific software and libraries.
if (!($?bintype)) then
set hosttype = `uname -s -r`
if ("$hosttype" =~ SunOS\ 4.1.[34]*) then
set bintype = sun
else if ("$hosttype" =~ SunOS\ 5.[45]*) then
set bintype = sol
else if ("$hosttype" =~ HP-UX\ [AB.0-9]*) then
set bintype = hp
else
echo "Unknown Hostype"
set bintype = unknown
endif
endif
setenv XILINX /products/xilinx/m1
setenv LD_LIBRARY_PATH ${XILINX}/bin/${bintype}:${LD_LIBRARY_PATH}
setenv LM_LICENSE_FILE /poducts/license/combined.flexlm:/xilinx/flex/license.dat
setenv XILINX_SERVER "license_server1;license_server2"
set path=($path ${XILINX}/bin/${bintype})
NOTE: The .cshrc file will often contain a line that terminates execution early
for non-interactive shells. A common example is the following:
if ($?USER == 0 || $?prompt == 0) exit
If the Xilinx environment is not not set prior to this line, all multi-node MPPR
jobs will fail because the remote shells will not have the proper environment.
All stty commands should be placed after this line in the .cshrc file.
Otherwise, stty error messages will be seen while running the Turns
Engine: "stty: Invalid Argument".
------------------------- nodelist file below --------------------------------
# This is a comment
# Note: machines are accessed by multi-node MPPR from top to bottom
# Sparc 20 machines running Solaris (SunOS 5.5)
kirk
spock
mccoy
krusher
janeway
picard
# Sparc 10 machines running SunOs (4.1.4)
michael
jermaine
marlon
tito
jackie
# HP's running HP-UX 9.05
william
george
ronald
jimmy
gerald
End of Record #1644
For the latest news, design tips, and patch information on the Xilinx design environment, check out the Xilinx Expert Journals! |