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: FPGA Implementation

Product Part: par

Product Version: 1.4.

Problem Title:
M1.4: How to setup and debug Multi-Pass Place and Route/Turns Engine/Networked PAR


Problem Description:
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 networks:
# 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 - Last Modified: 02/17/98 08:30

For the latest news, design tips, and patch information on the Xilinx design environment, check out the Technical Tips!