C/RTL协同仿真失败问题(二)

张开发
2026/6/7 2:56:35 15 分钟阅读

分享文章

C/RTL协同仿真失败问题(二)
一、C语言测试激励文件造成RTL仿真异常1.C语言测试激励文件检查返回结果为非0正确的返回应该是return 0一切非0的反馈都认为是失败的仿真。2.当前是否在多次访问的顶层接口上使用指针对于单一传输事务也就是说执行一次C语言函数在单次传输事务内多次访问任意指针需要使用volatile进行修饰如果不使用volatile指针进行优化那么会根据C语言标准将首次读取和最后一次写入外的所有一切都优化掉。二、可综合C语言代码造成RTL仿真异常1.查看c代码中只有有变量没有给出初始化值在C语言仿真中将没有定义的变量赋值随机值但是在RTL仿真中将没有定义的变量赋值未知值或者X值。2.查看数组是否出界查看数组的访问是否存在出界查看数组的索引是否有负值。3.设计中浮点运算查看浮点运算的精度是否足够查看浮点运算是否溢出查看浮点运算是否过多。4.hls::stream的detph是否合理5.查看样本数据集是否太大或者太多数据集太大仿真很慢有可能仿真一天之前设计一个模块仿真了一天才仿真完成但是功能是正确的。这种情况是发生在数据集大你的模块的性能太差那么就仿真非常慢。这个时候你可以使用小数据集进行仿真。

更多文章