首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何监视来自测试/序列的DUT输出?

如何监视来自测试/序列的DUT输出?
EN

Stack Overflow用户
提问于 2014-03-28 21:05:05
回答 2查看 2.9K关注 0票数 0

我是UVM的初学者。到目前为止,我能够为我的DUT创建以下环境。

具有监视器、驱动程序和序列的代理,用于我的DUT的所有输入输出接口。顶级UVM env。将有效数据发送到DUT的序列。我还没有实施记分板。

我很难理解如何处理以下情况:

对于tb-dut接口,TB需要等待来自DUT的事件(或事务)。一旦它接收到事务,TB就需要发送一个响应。实现这一点的最佳方法是什么?如何从序列中监视DUT事务?我的代理人有监视器,可以监视来自DUT的任何新的输出信号。那么,我是否需要以某种方式将这些数据从代理的监视器中带到我的测试/序列类中?我知道监视器有一个分析端口,它可以用来将接收到的数据发送到记分板进行检查。那么,我是否需要使用相同的端口来读取DUT输出数据,创建有效的响应并将其发送给DUT?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-03-28 23:30:34

这就是所谓的从序列或响应程序。协议如下

  1. 从序列向驱动程序发送请求--“告诉我该做什么”。
  2. 驱动程序检测到总线级别的请求,并将信息返回序列--“这是您应该做的”。
  3. 从序列完成了准备响应所需的操作,然后将响应项发送给驱动程序--“给您”。
  4. 驱动程序使用响应项的内容完成总线级别的响应,完成与顺序的握手--“谢谢”。

这一点在核查学院UVM食谱中有更详细的解释。

票数 6
EN

Stack Overflow用户

发布于 2014-04-15 07:28:02

这可以使用uvm_object来完成。

  1. 创建uvm_object基类。定义您的虚拟方法,例如wait_state,但将其保留为空。
  2. 扩展该类并实现虚拟方法。在testbench中包含类并实例化一个对象。说对象是"my_tb“
  3. 使用uvm_config_db#(uvm_object)::set .把它传递给排序器
  4. 获取排序器uvm_config_db#(Uvm_object)中的对象::get.
  5. 从您的序列中:任何可以访问它的地方: p_sequencer.my_tb.wait_state()。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22723196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档