关于port和export及imp的问题
时间:10-02
整理:3721RD
点击:
以blocking的get操作为例:A为port ,B为export,C为imp
A连接B,B连接C
当A发起get操作时,数据要从C流向B再流向A。此时只能通过在C中实现一个get函数,在A发起get操作时C自动调用get函数把数据传递给B再传递给A。
A在执行get操作时应该有两种情况:能get到数据,不能get到数据。但是A发起get操作会自动执行C的get函数,又怎么会get不到数据呢?
例:driver在什么时候才get不到sequencer中的数据呢?或者换句话说sequencer是怎么把数据send出去的呢?
A连接B,B连接C
当A发起get操作时,数据要从C流向B再流向A。此时只能通过在C中实现一个get函数,在A发起get操作时C自动调用get函数把数据传递给B再传递给A。
A在执行get操作时应该有两种情况:能get到数据,不能get到数据。但是A发起get操作会自动执行C的get函数,又怎么会get不到数据呢?
例:driver在什么时候才get不到sequencer中的数据呢?或者换句话说sequencer是怎么把数据send出去的呢?
板凳~
uvm的接口真是绕人呀,能简化下就好了,我一般用fifo方式隔离。而且a和b,b和c打交道就好,不要链太长。
driver只是被动等待get,具体发起是根据sequence,没有sequence就不会get了。具体可以看下uvm底层sequence代码。
driver收到数据后,要返回item_done到sequencer,sequencer收到后才发送下一个数据。否则不发。
嗯,用fifo隔离是个好主意,FIFO的一段可以实现write,另一端实现get操作。