一、设计概述1.vivado hls设计中最麻烦的地方就是明明你C仿真功能ok但是你rtl仿真就是不行2.第一种情况你c仿真okrtl仿真失败如果rtl仿真失败这种问题其实还是好解决的3.第二种情况你c仿真okrtl仿真直接仿真超过了一天都没有仿真完成这种情况仿真没有挂死但是仿真一直运行但是就是不结束4.第三种情况你c仿真okrtl仿真直接stall,始终挂起一直仿真。这三种情况中第二种和第三种情况非常坑基本上你没有任何手段去定位问题这个也是vivado hls一直被诟病的问题。二、c仿真okrtl仿真stall可能是指令的问题1.约束指令的问题这个需要排查hls::stream的depth的深度是否合理2.m_axi的detph指定是否合理3.顶层上volatile指针使用是否合理4.dependence指令约束是否合适不要随便使用dependence约束可以尝试约束和不约束dependence有没有影响。三、c仿真okrtl仿真stall可能是代码的问题1.array数组是否越界2.array bank访问是否撞车3.array是否存在越界访问4.for循环的循环边界问题5.串行逻辑和并行逻辑的问题6.数据类型的问题有符号和无符号的瞎用7.浮点和定点转换的问题浮点定点化开销太大造成仿真很难结束8.有符号定点和无符号定点问题。总结1.c仿真okrtl仿真挂起很多时候就是代码的问题你只能一行行代码看从本人开发那么多模块来看真的没有特别好的办法来查看问题2.如果你牛逼你可以看c综合的rtl代码有没有啥问题我尝试看过很难因为生成的verilog代码和c代码并不是一一对应的所以还是认真查看你的c代码吧。如果上述经验对你有帮助三联支持吧