微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > 求助:UVM中如何获得读出来的数据?

求助:UVM中如何获得读出来的数据?

时间:10-02 整理:3721RD 点击:
各位:
正在用UVM搭建仿真环境,把以前的apb的testcase拿出来跑的时候突然想到一个问题,我们通常使用`uvm_do_with(req,{req.addr==my_addr;req.direction==WRITE;req.data==my_data})来发送写传输,用`uvm_do_with(req,{req.addr==my_addr;req.direction==READ})来发送读传输。但是很多情况下,我们还需要知道读出来是什么值,对该值进行判断,然后才进行后续处理,比如:

  1. rdata=apb_read(addr);
  2. if(rdata==FF)
  3. ....
  4. else
  5. .....

复制代码


但是,使用了UVM的sequence中,该如何取得读的数据呢?
我在我的`uvm_do_with(req,{req.addr==my_addr;req.direction==READ})之后,加了一行“$display("addr=%h,data=%h",req.addr,req.data);"结果出来的地址是对的,data却一直是0。因此,我想问问大家,有什么办法来解决这个问题么?还是没办法?

`uvm_do_with(req,{req.addr==my_addr;req.direction==READ})
执行这一行语句只是生成一笔读的请求,然后送给driver去发送。读的data此时并没有回来啊。相当于此时只是生成了req的addr,但是data需要driver自己去得到的吧。
LZ不妨把req的原型贴出来看看。

读的结果只能从monitor中获得吧。你driver的transaction中不会有读回的data的。

可以用 uvm _sequence #(REQ,RSP )同时使用两个transition

那请问,REQ和RSP这两个transfer应该是相同的class类型吧?

by default, uvm_sequence就带这两个参数,是同一个类型的哦

好像可以不同的。 你照着REQ 在定义两外一个 RSP, 然后试一下。

这里的读操作的响应是需要SQR发送完REQ给Driver,但是Driver需要在读操作结束时将读完毕的READ data作为有效数据内容写到RSP结构内的数据,这样,SQR以及上层的SEQ/Virt_SEQ可以获得准确的READ data。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top