【问题标题】:UVM: connecting sequencer+monitor with a scoreboardUVM:将音序器+监视器与记分板连接
【发布时间】:2015-03-17 17:10:02
【问题描述】:

我想将记分牌与代理的序列器+监视器连接起来。使用分析 imp (uvm_analysis_imp) 连接监视器很简单,因为监视器拥有一个分析端口。

但是,我不知道如何连接音序器和记分板,因为音序器有一个 uvm_seq_item_pull_imp,而且不可能简单地将它连接到一个分析 imp。我的想法是检查 uvm_driver 使用的端口,即 uvm_seq_item_pull_port

不幸的是,连接音序器和记分板似乎并不常见,但出于我的目的,这是必要的。是否只能将 uvm_seq_item_pull_port 用于音序器-记分板连接,还是有更简单的方法?

【问题讨论】:

    标签: monitor agent uvm


    【解决方案1】:

    由于可重用性方面,通常不赞成在活动组件(定序器或驱动程序)之间进行这种连接(我有合同义务这样说:D)。不过,这在 SoC 级别可能是有意义的。

    您可以做的是创建自己的包含分析端口的音序器类(您可能已经有一个)。您必须扩展 send_request(...) 才能在该分析端口上写入项目。然后,您可以像连接普通监视器一样将此分析端口连接到记分牌:

    class some_sequencer extends uvm_sequencer #(some_item);
      uvm_analysis_port #(some_item) aport;
    
      function void send_request(uvm_sequence_base sequence_ptr, uvm_sequence_item t, bit rerandomize = 0);
        some_item item;
        if (!$cast(item, t))
          `uvm_fatal("CASTERR", "Can't cast")
        super.send_request(sequence_ptr, t, rerandomize);
        aport.write(item);
      endfunction
    endclass
    

    您可以在 EDAPlayground 上找到一个工作示例(注意:我从公认的 UVM 编码指南中获取了一些捷径)。

    【讨论】:

    • 嗨都铎王朝!这个解决方案对我有用,谢谢!我已经有这样的印象,即进行这种连接是“不受欢迎的”。但是,您能否详细说明为什么在可重用性方面存在问题?只是对您的代码示例的一个小注释: aport 应该在这里命名为 some_port
    【解决方案2】:

    此解决方案是可行的,但会限制 SoC 级别的可重用性。如果您想在 SoC 级别重新使用您的 UVM 环境,那么最好将 SB 与监视器连接起来。原因是在 soc 级别上,您的刺激可能来自其他区块,例如 CORE,在这种情况下,交易(应用于您的区块的刺激)应该被监视器捕获。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      相关资源
      最近更新 更多