HLS debug记录

上次调试碰到了一个雷区,一点细节没注意,让我调试了一下午,这次又是这个细节,调试了整整一天。怀疑了一切之后,终于看见了她。哎,又爱又恨啊,开篇博客记录一下遇到的坑,一点点的积累。
1.现象: C Simulation正确,上板验证部分数据错误
原因: 数组空间太小,写入的数据溢出

static int input_map_buffer_temp[input_map_length_int];
memcpy(input_map_buffer_temp,(int *)input,input_map_NUM*sizeof(int));

向input_map_buffer_temp中copy的数据,千万不能超过该数组的长度。C中溢出的数据不会对数据造成影响;但是在RTL中,溢出的数据会从Bram的0地址处重新copy,导致结果错误。由于C和RTL对该指令的处理不同,会导致工程在HLS C Simulation时完美通过Test Bench,但是生成IP之后上板测试时,结果天壤之别。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章