This Xilinx Development System option allows you to use multiple machines (nodes) that are networked together for a multi-run PAR job, significantly reducing the total amount of time to completion. You can specify multi-tasking from the UNIX command line.
Before the Turns Engine was developed for the Xilinx Development System, PAR could only run multiple jobs in a linear way. The total time required to complete PAR was equal to the sum of the times that it took for each of the PAR jobs to run. This is illustrated by the following PAR command.
par -l 5 -n 10 -i 10 -c 1 mydesign.ncd output.dir
The above tells PAR to run 10 place and route passes (-n 10) at effort level 5 (-l 5), a maximum of 10 router passes (-i 10), and one cost-based cleanup pass (c 1). It runs each of the 10 jobs consecutively, generating an output NCD file for each job, i.e., output.dir/5_5_1.ncd, output.dir/5_5_2.ncd, etc. If each job takes approximately one hour, then the run takes approximately 10 hours.
Suppose, however, that you have five nodes available. The Turns Engine allows you to use all five nodes at the same time, dramatically reducing the time required for all ten jobs. To do this you must first generate a file containing a list of the node names, one per line as in the following example.
A pound sign (#) in the example indicates a comment.
# NODE names
jupiter #Fred's node
mars #Harry's node
mercury #Betty's node
neptune #Pam's node
pluto #Mickey's node
Now run the job from the command line as follows.
par -m nodefile_name -l 5 -n 10 -i 10 -c 1 mydesign.ncd output.dir
nodefile_name is the name of the node file you created.
This runs the following jobs on the nodes specified.
jupiter: par -l 5 -i 10 -c 1 mydesign.ncd output.dir/5_5_1.ncd
mars: par -l 5 -i 10 -c 1 mydesign.ncd output.dir/5_5_2.ncd
mercury: par -l 5 -i 10 -c 1 mydesign.ncd output.dir/5_5_3.ncd
neptune: par -l 5 -i 10 -c 1 mydesign.ncd output.dir/5_5_4.ncd
pluto: par -l 5 -i 10 -c 1 mydesign.ncd output.dir/5_5_5.ncd
As the jobs finish, the remaining jobs are started on the nodes until all 10 jobs are complete. Since each job takes approximately one hour, all 10 jobs complete in approximately two hours.
You cannot judge the relative benefits of multiple placements by running the Turns Engine with options that generate multiple placements but do not route any of the placed designs (the -r PAR option specifies “no routing”). The design score you receive is the same for each placement. To get some indication of the quality of the placed designs, run at least one routing iteration (-i 1) on each placed design.
The following are the input files to the Turns Engine.
# This is a comment
# Note: machines are accessed by Turns Engine
# from top to bottom
# Sparc 20 machines running Solaris
kirk
spock
mccoy
krusher
janeway
picard
# Sparc 10 machines running SunOS
michael
jermaine
marlon
tito
jackie
# HPs running HP-UX
william
george
ronald
jimmy
gerald
The naming convention for the NCD file, which may contain placement and routing information in varying degrees of completion, is placer_level_router_level_table.ncd. If any of these elements are not used, they are replaced by an 'x'. For example, for the first design file being run with the options -n 5 -t 16 -rl 4 -pl 2, the NCD output file name would be 2_4_16.ncd. The second file would be named 2_4_17.ncd. For the first design file being run with the options -n 5 -t 16 -r -pl 2, the NCD output file name would be 2_x_16.ncd. The second file would be named 2_x_17.ncd.
The Turns Engine can run on the following networks.
The following limitations apply to the Turns Engine.
These are the system requirements for running the Turns Engine.
To determine if everything is set up correctly, you can run the rsh command to the nodes to be used. Type the following.
rsh node_name /bin/sh -c par
If you get the usage message back on your screen, everything is set correctly.
The environment variables below are interpreted by the Turns Engine manager.
If you attempt to run multiple PAR jobs with the -m nodefile_name option, the Turns Engine manager (impman) license must be available so that jobs can be allotted to the designated hosts to perform each individual PAR run. If the impman license is not available, you get an error message.
If PAR is able to lock the impman license, each job running on a node tries to lock a Turns Engine place and route (imppar) license. If it is able to do this, the job is automatically timing-driven and device-independent. You see a message like this on your screen.
Starting job 5_1 on node NODE1
If PAR is unable to lock an imppar license, you do not see a “starting job” message and PAR reverts to the normal sequence of par, tdpar, and family licensing.
For more information on Xilinx security, see the applicable Install and Release Document.
The following is the PAR command line syntax to run the Turns Engine.
par -m nodelist_file -n #_of_iterations -s #_of_iterations_to_save mapped_desgin.ncd output_directory.dir
-m nodelist_file specifies the nodelist file for the Turns Engine run.
-n #_of_iterations specifies the number of place and route passes.
-s #_of_iterations_to_save saves only the best -s results.
mapped design.ncd is the input NCD file.
output_directory.dir is the directory where the best results (-s option) are saved. Files include placed and routed NCD, summary timing reports (DLY), pinout files (PAD), and log files (PAR).
With the Turns Engine you may receive messages from the login process. The problems are usually related to the network or to environment variables.
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.
When PAR is running multiple jobs and is not in multi-tasking mode, output from PAR is displayed on the screen as the jobs run. When PAR is running multiple jobs in multi-tasking mode, you only see information regarding the current status of the Turns Engine. For example, when the job described in the “Turns Engine Overview” section is executed, the following screen output would be generated.
Starting job 5_5_1 on node jupiter
Starting job 5_5_2 on node mars
Starting job 5_5_3 on node mercury
Starting job 5_5_4 on node neptune
Starting job 5_5_5 on node pluto
When one of the jobs finishes, a message similar to the following displays.
Finished job 5_5_3 on node mercury
These messages continue until there are no jobs left to run, at which time “Finished” appears on your screen.
For HP workstations, you are not able to interrupt the job with Control-C as described below if you do not have Control-C set as the escape character. To set the escape character, refer to your HP manual.
You may interrupt the job at any time by pressing Control-C. If you interrupt the program, you see the following on your screen.
CONTRL-C interrupt detected.
Please choose one of the following options:
1. Continue processing and ignore the interrupt.
2. Normal program exit at next check point.
3. Exit program immediately.
4. Add a node for running jobs.
5. Stop using a node.
6. Display current status.
Enter choice - - >
Choices are described below.
The list of nodes described above is not necessarily numbered in a linear fashion. Nodes that are disabled are not displayed. For example, if NODE2 is disabled, the next time “Stop using a node” is opted, the following is displayed.
ID NODE STATUS JOB TIME 1. jupiter Job Running 5_5_10 02:30:45 2. mars Job Running 5_5_11 02:28:03 3. mercury Not Available 4. neptune Pending Term 5_5_12 02:20:01 5. pluto Job Running 5_5_13 02:20:01 6. venus Idle 7. earth Job Running 5_5_12 25
Each entry is described below:
There is also a status named “Job Finishing”. This appears if the Turns Engine has been instructed to halt the job at the next checkpoint.