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之後上板測試時,結果天壤之別。

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