Showing results for 
Search instead for 
Did you mean: 
Honored Contributor I

qsys-script: no output on stdout when called from TCL script

Since the TCL interpreter in qsys-script is very limited and outdated I want to reduced the amount of work done via qsys-script to the absolute minimum. However when I call qsys-script from another TCL script I get no output, presumably because of some Java magic in the background. My snipped is as follows: 


set qsys_path set qsys_system toplevel.qsys set qsys_script qsys-test.tcl if { == 0} { puts $result } else { post_message -type error "Error executing qsys-script: $result" }  


while the following works as expected: 

if { == 0} { puts $result } else { post_message -type error "Error executing ls: $result" }  


Any ideas how to overcome this other than the output to an intermediate file?
0 Kudos
4 Replies
Honored Contributor I

The output of teh qsys-script call goes into STDERR. 

Try to append "2>&1" after your command. This combines STDOUT and STDERR to STDOUT. 

If you are just interested in your own output from your script and not from qsys-script try to append just: "2>err" or "2>/dev/null". 

I tested both successfully.
Honored Contributor I

I'm sorry but this does not seem to work in my environment (Windows 7). My command line is 

exec $qsys_path --script=qsys-test.tcl 2>&1
Honored Contributor I

Hi Arne, 


i attached the Files from my test. I run them also on Win7, but within a soc cygwin shell (In this all pathes are set correctly).  


quartus_sh -t test.tcl  


Hope this helps ... 


I realize I'm necroing a fairly old thread but it's the closest thing I've found to a non-solution to a similar problem and I'm hoping that there might be an answer here. I've got a couple of python programs that I want to run pre and post building. The pre and post processor runs on TCL so I created a couple TCL scripts to run the python programs. I would like the output of the programs to be put into the output transcript but adding "2>&1" does not seem to do the trick. Here's my TCL invocation for one of them:


# Runs the Python script to update the # system build package. proc call_python {} { set output [exec python ../bin/ -o ../src/system_build_info_pkg.vhd 2>&1] puts $output } post_message "Executing run_update_build_time.tcl script..." post_message "==================================================================" post_message "Running system build update Python program" call_python post_message "=================================================================="

The output in Quartus while running is only the post_message text:


Info: Executing run_update_build_time.tcl script... Info: ================================================================== Info: Running system build update Python program Info: ================================================================== Info (23030): Evaluation of Tcl script ../bin/run_update_build_time.tcl was successful Info: Quartus Prime Shell was successful. 0 errors, 0 warnings

Any ideas on how I might be able to get the output to display?