How to print UVM Report Summary UVM1.2 with UVM_NONE verbosity

In reply to aditya.polepeddi:

UVM 1.1 report summary code:


  // See <uvm_report_object::report_summarize> method.

  virtual function void summarize(UVM_FILE file=0);
    string id;
    string name;
    string output_str;
    uvm_report_catcher::summarize_report_catcher(file);
    f_display(file, "");
    f_display(file, "--- UVM Report Summary ---");
    f_display(file, "");

    if(max_quit_count != 0) begin
      if ( quit_count >= max_quit_count ) f_display(file, "Quit count reached!");
      $sformat(output_str, "Quit count : %5d of %5d",
                             quit_count, max_quit_count);
      f_display(file, output_str);
    end

    f_display(file, "** Report counts by severity");
    for(uvm_severity_type s = s.first(); 1; s = s.next()) begin
      if(severity_count.exists(s)) begin
        int cnt;
        cnt = severity_count[s];
        name = s.name();
        $sformat(output_str, "%s :%5d", name, cnt);
        f_display(file, output_str);
      end
      if(s == s.last()) break;
    end

    if (enable_report_id_count_summary) begin

      f_display(file, "** Report counts by id");
      for(int found = id_count.first(id);
           found;
           found = id_count.next(id)) begin
        int cnt;
        cnt = id_count[id];
        $sformat(output_str, "[%s] %5d", id, cnt);
        f_display(file, output_str);
      end

    end

  endfunction

UVM 1.2 report summary code:


  virtual function void report_summarize(UVM_FILE file = 0);
    string id;
    string name;
    string output_str;
    string q[$];

    uvm_report_catcher::summarize();
    q.push_back("\n--- UVM Report Summary ---\n\n");

    if(m_max_quit_count != 0) begin
      if ( m_quit_count >= m_max_quit_count )
        q.push_back("Quit count reached!\n");
      q.push_back($sformatf("Quit count : %5d of %5d\n",m_quit_count, m_max_quit_count));
    end

    q.push_back("** Report counts by severity\n");
    foreach(m_severity_count[s]) begin
      q.push_back($sformatf("%s :%5d\n", s.name(), m_severity_count[s]));
    end

    if (enable_report_id_count_summary) begin
      q.push_back("** Report counts by id\n");
      foreach(m_id_count[id])
        q.push_back($sformatf("[%s] %5d\n", id, m_id_count[id]));
    end

    `uvm_info("UVM/REPORT/SERVER",`UVM_STRING_QUEUE_STREAMING_PACK(q),UVM_LOW)
  endfunction

  
//last line in report_summarize function in uvm 2.0
`uvm_info("UVM/REPORT/SERVER",`UVM_STRING_QUEUE_STREAMING_PACK(q),UVM_LOW)

So, In uvm 2.0 if you change default uvm verbosity to UVM_NONE then “UVM Report Summary …” won’t be printed at the end of simulation.


// If you want change verbosity to UVM_NONE and still want to print it in uvm 2.0 then specify the verbosity change only uvm_test_top.* components
// so, it won't affect the "UVM Report Summary..." which is printed by reporter. 

UVM_INFO /pkg/qct/software/synopsys/vcs/vcs-mx_vP-2019.06-1//etc/uvm-1.2/base/uvm_report_server.svh(894) @ 120000: reporter [UVM/REPORT/SERVER] 
--- UVM Report Summary ---


+uvm_set_verbosity="uvm_test_top.*,UVM/REPORT/SERVER,UVM_NONE,run"


Why are you using ID “UVM/REPORT/SERVER” in your test for uvm_info?
If you use any other id then you don’t have to worry about all this.


https://www.linkedin.com/in/patel-rahulkumar/