0
votes

I have a tcl script to run with Vivado HLS (vivado_hls -f run_vhls.tcl).

  • When I run it using the built-in Vivado HLS tcl shell, it works all fine. Note: apparently the shell is Cygwin based (as when I do pwd it gives: /cygdrive/c/etc)

  • When I run the tcl script using the Cygwin shell, it generates all the hls outputs, with two warnings/errors compared to the built-in VHLS shell:

    1. At the start of the run:

@I [HLS-10] Running 'C:/Xilinx/Vivado_HLS/2015.2/bin/unwrapped/win64.o/vivado_hls.exe' C:/Xilinx/Vivado_HLS/2015.2/tps/tcl/tcl8.5/tzdata/Europe/London can't be opened. for user 'at3410' on host 'ee-at3410'

There is no "tzdata" folder in the path given.

  1. At the end, when all the hls outputs are generated, says:

    @I [WVLOG-307] Generating RTL Verilog for 'CalcSpatConsts'. > @E [HLS-70] There is an error calling 'vivado_hls'; try "-help'. @I [HLS-112] Total elapsed time: 262.13 seconds; peak memory usage: 1.59 GB. @I [LIC-101] Checked in feature [ap_opencl]

I am invoking the vhls command in a makefile

(cd $(dir_impls)/$(tuple) && vivado_hls -f run_vhls.tcl)

and it breaks soon after displaying the messages in No. 2, with the following message:

Makefile:103: recipe for target '/cygdrive/c/path/latency_values.tcl' failed make: *** [/cygdrive/c/path/latency_values.tcl] Error 2

Does anybody know why I see this message only in the Cygwin shell?

What is the problem? How can I fix it?

As all the hls results are generated correctly using the Cygwin shell, is there any way to tell vivad_hls to ignore this error? So that my makefile procedure remains unbroken.

1
The second error might be a consequence of the first: Vivado_hls records that an error occurred and issues the second as a kind of summary. The first error is probably due to your language settings. Try playing with the LANG, LC_CTYPE... environment variables, maybe. - Renaud Pacalet
Thanks for your comment. How do I do that? In the lists of Environmental variables (both User and System) I have none of the two your mentioned. - AryT

1 Answers

0
votes

If things work with one solution and not the other and if it is due to the environment variables, the best is to print them in both cases and compare:

set fd [open "foo.txt" w]
foreach key [array names ::env] {
  puts $fd "$key: $::env($key)";
}
close $fd

Use foo.txt in one case and bar.txt in the other. Then, in your Cygwin shell:

$ sort foo.txt > foo1.txt
$ sort bar.txt > bar1.txt
$ diff foo1.txt bar1.txt

Once you found which environment variables differ, you can test by setting them in your Cygwin shell before launching vivado_hls:

export VARNAME1=VARVALUE1
export VARNAME2=VARVALUE2
...
vivado_hls -f run_vhls.tcl

If it works adapt your makefile and you will be done.