TLM通信时遇到的一个问题:
之前没有重视过,ap.write(item)传递数据给中间fifo的analysis_export,fifo另一边blocking_get_export所连接的blocking_get_port会调用(该类型fifo已定义write操作)get来从fifo拿到数据。我的发数据那个组件,对于item的例化大致是,item=new(1);然后在循环中每次操作item一次然后直接ap.write(item)写出去,开始认为很完美,然而结果却是接受方得到的item数据全部为最后一次操作所留下的值。
\n
这个时候,我第一反应是什么呢?是不是fifo的深度为1,导致取出来的数据都是最后一个呢?于是我仔细看了下源码,发现他在new的时候,定义的size=0,表示该类型fifo的深度是无限的。抱着不可不信又不能全信的态度,又思考了另一个问题,为什么能取出同一个数,取想要的次数呢?难道get用错了?为什么get跟peek的效果一致呢?这不是跟以往了解的完全对不上吗?
\n
终于,我发现的我的item=new(1)跟赋值一起,也就是每次循环都new一个item,这样的话,数据就能对上了,后面发现是ap.write传递的是handle,并不是一直理解的将一个item送进fifo,只有每次都new(1),这样让fifo存储的handle指向不同的存储空间,这样行为才能正常。
\n
如此便是简单的Blueprint。
tlm通信中传递的数据有误的问题
最新推荐文章于 2022-10-26 17:32:49 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)