我是靠谱客的博主 不安蓝天,最近开发中收集的这篇文章主要介绍Vitis HLS报错(已解决):@E Simulation failed: SIGSEGV. ERROR,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在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命令:

csim_design -ldflags {-Wl,--stack,10485760}
cosim_design -ldflags {-Wl,--stack,10485760}

最终解决了这个仿真报错问题。
 

最后

以上就是不安蓝天为你收集整理的Vitis HLS报错(已解决):@E Simulation failed: SIGSEGV. ERROR的全部内容,希望文章能够帮你解决Vitis HLS报错(已解决):@E Simulation failed: SIGSEGV. ERROR所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部