Analysis Components & Techniques(从AnalysisConnectionst开始)

上一篇 / 下一篇  2018-12-25 15:11:57

   AnalysisConnections

  Overview  

       分析组件通过实现与其连接的analysis port调用的write()函数来捕获事务数据。根据分析组件的功能,您可以直接实现write()函数并使用uvm_analysis_imp类提供“imp” export,也可以通过使用uvm_analysis_export类提供分层export来进行分层结构子类的write()实现。

  Single Transaction Stream: uvm_subscriber

        许多analysis组件只需要对Monitor发送的数据进行采样,并执行一些计算,例如覆盖率测量。对于仅处理单个事务流的这些组件,UVM提供了一个名为uvm_subscriber的基本组件类。该类扩展了uvm_component,并包含一个名为analysis_export的单个“imp”类型export,此export包含write()的纯虚拟声明。要使用此类,只需对其进行扩展并重载write()函数以执行analysis计算。

        class coverage_sb extends uvm_subscriber #(Packet);
            `uvm_component_utils(coverage_sb)

             Packet pkt;
             int pkt_cnt;

             covergroup cov1;
                 s: coverpoint pkt.src_id {
                       bins src[8] = {[0:7]};
                     }
                 d: coverpoint pkt.dest_id {
                       bins dest[8] = {[0:7]};
                     }
                 cross s, d;
             endgroup : cov1

             function new( string name , uvm_component parent);
                super.new( name , parent );
                cov1 = new();
             endfunction

              function void write(Packet t);
                 real current_coverage;
                 pkt = t;
                 pkt_cnt++;
                 cov1.sample(); // cause sampling of covergroup
                 current_coverage = $get_coverage();
                 uvm_report_info("COVERAGE",$psprintf("%0d Packets sampled, Coverage = %f%% ",
                                              pkt_cnt,current_coverage));

              endfunction

          endclass

 

         

 


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2019-01-13  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 19342
  • 日志数: 75
  • 建立时间: 2018-09-03
  • 更新时间: 2018-12-29

RSS订阅

Open Toolbar
博评网