在Vitis HLS 2021.2中构建了一个使用了多个超大数组的函数,仿真时报错但并未定位在何处,只给出以下信息:@E Simulation failed: SIGSEGV. ERROR
排查过程为:Baidu&Google发现原因可能有以下几个:
原因1:数组/指针越界
仔细排查了三遍,发现确实可能存在一些越界寻址错误,经过修改还是报一样的仿真错误信息,遂跳至原因2。
原因2:图像地址错误
我给函数的输入为自定义的数组,并未使用导入图像/数据,遂跳至原因3。
原因3:代码内存资源(堆栈)空间不足
这个可能性来自于UG902(中文版)的解释,原话是:
“仿真可能因内存不足而失败, 因为数组置于内存中存在的堆栈上, 而不是置于由操作系统管理并且可使用本地磁盘空间来扩展的堆上。”
UG902给出的解决办法是:
(1)方式1:在 Vitis® HLS 中可转至“Project Settings” → “Simulation” → “Linker flags”,输入:
-Wl,--stack,10485760
其中10485760代表的是设置的堆栈大小(bytes),可以为其他值。
(2)方式2:通过tcl命令:文章来源:https://www.toymoban.com/news/detail-433101.html
csim_design -ldflags {-Wl,--stack,10485760}
cosim_design -ldflags {-Wl,--stack,10485760}
最终解决了这个仿真报错问题。
文章来源地址https://www.toymoban.com/news/detail-433101.html
到了这里,关于Vitis HLS报错(已解决):@E Simulation failed: SIGSEGV. ERROR的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!