cms-L1TK / firmware-hls

HLS implementation of the tracklet pattern reco modules of the Hybrid tracking chain
15 stars 24 forks source link

HLS cosim error when using too many ports #105

Closed RobertGlein closed 4 years ago

RobertGlein commented 4 years ago

This issue has been reported in a forum post but there are no replies to that: https://forums.xilinx.com/t5/High-Level-Synthesis-HLS/Cosim-fails-to-open-file-limit-on-the-number-of-ports-in-Vivado/td-p/1130888

Summary: For HLS designs with a large number of ports csim and csynth pass but cosim reports an error. This was not the case for Vivado HLS 2019.1 and earlier. We see this error in Vivado/Vitis HLS 2019.2 and later. https://github.com/cms-tracklet/firmware-hls/actions/runs/236781634 https://gitlab.cern.ch/rglein/firmware-hls_actions/-/jobs/9850280#L676

We tried it within a Docker container (not supported by Xilinx) hosted in MacOS X and it happened to work. We tried it on different systems using different operating systems (mostly supported ones) and there was no issue with Vivado HLS 2019.1 and earlier as well as in the Docker container for later versions.

Error message:

## run all
WARNING: file ../tv/cdatafile/c.testFunction.autotvin_array_508.dat could not be opened
Failed to open file "../tv/cdatafile/c.testFunction.autotvin_array_508.dat"!
ERROR: Simulation using HLS TB failed.
$finish called at time : 110 ns : File "/home/gitlab-runner/builds/biTwR5NQ/1/rglein/firmware-hls_actions/ulimit_test/test/solution1/sim/verilog/testFunction.autotb.v" Line 63135
## quit
RobertGlein commented 4 years ago

It is solved by increasing the limit for the maximum number of files:

ulimit -a # Reports the limit
ulimit -S -n 2048 # Sets the soft limit to 2048
ulimit -a # Reports the limit

If the soft limit exceeds the hard this has to increased as well (sudo needed): ulimit -H -n 2048

It is fixed here: https://github.com/cms-tracklet/firmware-hls/commit/eb1afe2ba1e4b24fdc58c2e6f1e73aec8302834a https://github.com/cms-tracklet/firmware-hls/actions/runs/236838216 https://gitlab.cern.ch/rglein/firmware-hls_actions/-/jobs/9850487#L707

Further Mei-Li tried it with ModelSim and there the error of the file limit is reported correctly.

Here are the comments from the Xilinx development team as the answer to our service request: