URL
https://opencores.org/ocsvn/uart2bus_testbench/uart2bus_testbench/trunk
Subversion Repositories uart2bus_testbench
[/] [uart2bus_testbench/] [trunk/] [tb/] [agent/] [coverage/] [uart_coverage.svh] - Rev 11
Go to most recent revision | Compare with Previous | Blame | View Log
//-------------------------------------------------------------------------------------------------//// UART2BUS VERIFICATION////-------------------------------------------------------------------------------------------------// CREATOR : HANY SALAH// PROJECT : UART2BUS UVM TEST BENCH// UNIT : AGENT//-------------------------------------------------------------------------------------------------// TITLE : UART Coverage// DESCRIPTION: THIS BLOCK INCLUDES ALL THE COVERPINS THAT ARE SAMPLED EACH STIMULUS//-------------------------------------------------------------------------------------------------// LOG DETAILS//-------------// VERSION NAME DATE DESCRIPTION// 1 HANY SALAH 08022016 FILE CREATION// 2 HANY SALAH 11022016 IMPROVE BLOCK DESCRIPTION & ADD CODE COMMENTS//-------------------------------------------------------------------------------------------------// ALL COPYRIGHTS ARE RESERVED FOR THE PRODUCER ONLY .THIS FILE IS PRODUCED FOR OPENCORES MEMBERS// ONLY AND IT IS PROHIBTED TO USE THIS MATERIAL WITHOUT THE CREATOR'S PERMISSION//-------------------------------------------------------------------------------------------------class uart_coverage extends uvm_component;`uvm_component_utils(uart_coverage)uart_transaction trans,_trans;uvm_analysis_export #(uart_transaction) cov_mon;uvm_tlm_analysis_fifo #(uart_transaction) mon_fifo;covergroup trans_attrib;communication_mode:coverpoint trans._mode{bins valid_mode = {text,binary};bins invalid_mode = {wrong_mode_text,wrong_mode_bin};}address:coverpoint trans.address;false_data:coverpoint trans.false_data_en;unknown_prefix:coverpoint trans.wrong_prefix;endgroup:trans_attribcovergroup text_mode_cov;command:coverpoint trans._command{bins valid_command ={read,write};illegal_bins invalid_command={nop,invalid_read,invalid_write};}first_white_space_field:coverpoint trans._spacetype1;second_white_space_field:coverpoint trans._spacetype2;end_of_line_field:coverpoint trans._eoltype;prefix_character_type:coverpoint trans._chartype;endgroup:text_mode_covcovergroup binary_mode_cov;command:coverpoint trans._command{bins normal_command={read,write,nop};bins wrong_command ={invalid_read,invalid_write};}acknowledge_requirement:coverpoint trans._reqack;incremental_address_requirement:coverpoint trans._reqinc;Length_of_data:coverpoint trans.length_data{bins zero = {0};bins valid = {[1:256]};illegal_bins invalid= {[257:$]};}endgroup:binary_mode_covfunction new (string name, uvm_component parent);super.new(name,parent);trans_attrib = new();text_mode_cov = new();binary_mode_cov = new();endfunction:newextern function void build_phase(uvm_phase phase);extern function void connect_phase (uvm_phase phase);extern task run_phase (uvm_phase);endclass:uart_coveragefunction void uart_coverage::build_phase (uvm_phase phase);super.build_phase(phase);trans = uart_transaction::type_id::create("trans");_trans = uart_transaction::type_id::create("_trans");cov_mon = new ("cov_mon",this);mon_fifo = new ("mon_fifo",this);endfunction:build_phasefunction void uart_coverage::connect_phase(uvm_phase phase);cov_mon.connect(mon_fifo.analysis_export);endfunction:connect_phasetask uart_coverage::run_phase(uvm_phase phase);foreverbeginmon_fifo.get(_trans);$cast(trans,_trans.clone());trans_attrib.sample();if(trans._mode == text)begintext_mode_cov.sample();uvm_resource_db#(int)::write_by_name("coverage_cloud","text_coverage",text_mode_cov.get_coverage());endelse if (trans._mode == binary)beginbinary_mode_cov.sample();endendendtask:run_phase
Go to most recent revision | Compare with Previous | Blame | View Log
