Return to Support Page
 homesearchagentssupportask xilinxmap

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!

© 1998 Xilinx, Inc. All rights reserved
Trademarks and Patents