OpenCores
URL https://opencores.org/ocsvn/uart2bus_testbench/uart2bus_testbench/trunk

Subversion Repositories uart2bus_testbench

[/] [uart2bus_testbench/] [trunk/] [tb/] [agent/] [coverage/] [uart_coverage.svh] - Diff between revs 13 and 14

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 13 Rev 14
Line 29... Line 29...
 
 
  covergroup trans_attrib;
  covergroup trans_attrib;
    communication_mode:
    communication_mode:
      coverpoint trans._mode{
      coverpoint trans._mode{
        bins valid_mode         = {text,binary};
        bins valid_mode         = {text,binary};
        bins invalid_mode       = {wrong_mode_text,wrong_mode_bin};
        illegal_bins invalid_mode       = {wrong_mode_text,wrong_mode_bin};
      }
      }
    address:
    address:
      coverpoint trans.address;
      coverpoint trans.address;
    false_data:
 
      coverpoint trans.false_data_en;
 
    unknown_prefix:
 
      coverpoint trans.wrong_prefix;
 
  endgroup:trans_attrib
  endgroup:trans_attrib
 
 
  covergroup text_mode_cov;
  covergroup text_mode_cov;
    command:
    command:
      coverpoint trans._command{
      coverpoint trans._command{
        bins          valid_command  ={read,2};
        bins          valid_command  ={read,2};
        illegal_bins  invalid_command={nop,invalid_read,invalid_write};
        illegal_bins  invalid_command={nop,invalid_read,invalid_write};
      }
      }
    first_white_space_field:
    first_white_space_field:
      coverpoint trans._spacetype1;
      coverpoint trans._spacetype1{bins         validspace   ={single,tab};
 
                                   illegal_bins invalidspace ={wrong_space};}
    second_white_space_field:
    second_white_space_field:
      coverpoint trans._spacetype2;
      coverpoint trans._spacetype2{bins         validspace   ={single,tab};
 
                                   illegal_bins invalidspace ={wrong_space};}
    end_of_line_field:
    end_of_line_field:
      coverpoint trans._eoltype;
      coverpoint trans._eoltype{bins         valideol={cr,lf};
 
                                illegal_bins eol ={wrong_eol};}
    prefix_character_type:
    prefix_character_type:
      coverpoint trans._chartype;
      coverpoint trans._chartype;
 
 
  endgroup:text_mode_cov
  endgroup:text_mode_cov
 
 
  covergroup binary_mode_cov;
  covergroup binary_mode_cov;
    command:
    command:
      coverpoint trans._command{
      coverpoint trans._command{
        bins normal_command={read,2,nop};
        bins normal_command={read,2,nop};
        bins wrong_command ={invalid_read,invalid_write};
        illegal_bins wrong_command ={invalid_read,invalid_write};
      }
      }
    acknowledge_requirement:
    acknowledge_requirement:
      coverpoint trans._reqack;
      coverpoint trans._reqack;
    incremental_address_requirement:
    incremental_address_requirement:
      coverpoint trans._reqinc;
      coverpoint trans._reqinc;
Line 103... Line 104...
  _trans = uart_transaction::type_id::create("_trans");
  _trans = uart_transaction::type_id::create("_trans");
 
 
endfunction:build_phase
endfunction:build_phase
 
 
function void uart_coverage::connect_phase(uvm_phase phase);
function void uart_coverage::connect_phase(uvm_phase phase);
//  cov_mon.connect(mon_fifo.analysis_export);
 
endfunction:connect_phase
endfunction:connect_phase
 
 
task uart_coverage::run_phase(uvm_phase phase);
task uart_coverage::run_phase(uvm_phase phase);
 
 
endtask:run_phase
endtask:run_phase
 
 
function void uart_coverage::write(uart_transaction t);
function void uart_coverage::write(uart_transaction t);
   $cast(trans,t.clone());
   $cast(trans,t.clone());
       trans_attrib.sample();
       trans_attrib.sample();
 
   uvm_resource_db#(int)::write_by_name("coverage_cloud","general_coverage",trans_attrib.get_coverage());
    if(trans._mode == text)
    if(trans._mode == text)
      begin
      begin
      text_mode_cov.sample();
      text_mode_cov.sample();
      uvm_resource_db#(int)::write_by_name("coverage_cloud","text_coverage",text_mode_cov.get_coverage());
      uvm_resource_db#(int)::write_by_name("coverage_cloud","text_coverage",text_mode_cov.get_coverage());
      end
      end
    else if (trans._mode == binary)
    else if (trans._mode == binary)
      begin
      begin
      binary_mode_cov.sample();
      binary_mode_cov.sample();
 
      uvm_resource_db#(int)::write_by_name("coverage_cloud","binary_coverage",binary_mode_cov.get_coverage());
      end
      end
endfunction // write
endfunction // write

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.