UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 36936

Tcl - "process run " always returns "true"

Description

I am using Tcl Scripts to check the results of processes.

However they are not catching failing processes using return codes.

The Xilinx Tcl help for the "process run" command states that the return code for "process run <Process name>" is, "True if the process was successful; false otherwise."

However, when attempting to use the return code, as in the examples below, it appears that the return code is always "True" regardless of whether the process succeeds or fails.

Example 1:

The following Tcl commands will always return true regardless of whether or not XST failed or passed.

puts "xst_result = [process run {Synthesize - XST}]"
or
catch {process run map} map_result
puts "Map completed successfully = $map_result"

In the above example both "xst_result" and "$map_result" are always resolved to "true."

Solution

The "Help" for the "process run" command is misleading and has been updated for ISE Design Suite 12.3.

The return code applies only to the Tcl process or command and not to the process that is being run by the Tcl process.

As long as the ISE process (e.g. Synthesize - XST, Translate, Map, Par, etc...) can be launched successfully, the "process run" command will return "True."

The suggested command to determine the state of a process is the "process get <process name> status" command.

The following synthesis script shows how both "process get <process name> status" and "process run <Process name>" can be used together.


proc runsynth {} {
set process "Synthesize - XST"
if { [catch { process run $process } result ] } {
puts "$process run call failed."
puts "result is: $result"
return false
} else {
# process launched, did it work?
set result [process get $process status]
if { $result == "errors" } {
puts "$process failed"
return false

}
}
return true
}



Running "process get <process name> status" will return "Up-to-date", "Out-of-date", "warnings", or "errors."
 
The help and online documentation will be updated in ISE Design Suite 13.1 to add a help topic for "process get <process name> status" and to make the "process get <process name> status" return value more clear.
AR# 36936
Date Created 08/04/2010
Last Updated 10/14/2014
Status Active
Type General Article
Tools
  • ISE Design Suite - 11.1
  • ISE Design Suite - 11.2
  • ISE Design Suite - 11.3
  • More
  • ISE Design Suite - 11.4
  • ISE Design Suite - 11.5
  • ISE Design Suite - 12.1
  • ISE Design Suite - 12.2
  • ISE Design Suite - 12.3
  • ISE Design Suite - 12.4
  • ISE Design Suite - 13.1
  • ISE - 10.1
  • Less