https://www.zhihu.com/question/456999847/answer/1867361926
写个坑,最近在用vitis hls 在hls里仿真联合仿真全部通过,没问题,vivado综合生成bit流也没问题,上板子输出的结果就不对,资源也够用,找了一万年
后来偶然注意到hls中dsp用到了70%,vivado综合后是100%,其他都没满,调整算法,把hls里的dsp降到40%,vivado中最终是80%,在上板结果就对了
好家伙,vivado大哥,dsp不够用您告诉我一声啊,干嘛要自己扛下一切,将错就错呢,算不出来你给我个错的答案有什么用呢,什么报错都不给,默默承担了一切
------------------------------------------------------------------
在这个底下开个回答,作为一些笔记吧。不能总是当伸手党。
一、non-gui mode
在 .bashrc 末尾添加
export PATH=$PATH:/tools/Xilinx/Vivado/2018.3/bin
export PATH=$PATH:/tools/Xilinx/Vitis_HLS/2020.2/bin
调用的时候
vitis_hls -f run.tcl
vivado_hls -f run.tcl
二、改时钟周期可以压榨max freq.,hls会自动帮忙插入流水线。如果resource足够的话可以在hls里面设一个很高的时钟(往往会超,但是这个时候流水线已经插到极限了),到vivado里面再用一个较低的时钟,去符合设计要求(vivado flow only)。
三 mod 2的次方取余可以用&1 3 7 15 ... 代替,防止综合出urem
四 一个csim查错遇到的问题,stream数组访问越界后会写到其他stream上