|  | // Copyright lowRISC contributors. | 
|  | // Licensed under the Apache License, Version 2.0, see LICENSE for details. | 
|  | // SPDX-License-Identifier: Apache-2.0 | 
|  |  | 
|  | interface kmac_cov_if | 
|  | ( | 
|  | input logic     sw_cmd_process, | 
|  | input bit [5:0] keccak_st, | 
|  | input bit [3:0] msgfifo_depth, | 
|  | input bit       msgfifo_full, | 
|  | input bit       msgfifo_empty | 
|  | ); | 
|  |  | 
|  | `include "dv_fcov_macros.svh" | 
|  | typedef enum logic [5:0] { | 
|  | StIdle = 6'b011111, | 
|  |  | 
|  | StActive = 6'b000100, | 
|  |  | 
|  | StPhase1 = 6'b101101, | 
|  |  | 
|  | StPhase2Cycle1 = 6'b000011, | 
|  |  | 
|  | StPhase2Cycle2 = 6'b011000, | 
|  |  | 
|  | StPhase2Cycle3 = 6'b101010, | 
|  |  | 
|  | StError = 6'b110001, | 
|  |  | 
|  | StTerminalError = 6'b110110 | 
|  | } keccak_st_e; | 
|  |  | 
|  | covergroup cmd_process_cg @(sw_cmd_process == 1); | 
|  | kmac_keccak_state: coverpoint keccak_st { | 
|  | bins active = {StActive, StPhase1, StPhase2Cycle1, StPhase2Cycle2, StPhase2Cycle3}; | 
|  | bins inactive = {StIdle}; | 
|  | } | 
|  |  | 
|  | // TODO: check with designer, this might be unreachable. | 
|  | kmac_msgfifo_full: coverpoint msgfifo_full { | 
|  | bins full     = {1}; | 
|  | bins not_full = {0}; | 
|  | } | 
|  |  | 
|  | kmac_msgfifo_empty: coverpoint msgfifo_empty { | 
|  | bins empty     = {1}; | 
|  | bins not_empty = {0}; | 
|  | } | 
|  |  | 
|  | kmac_msgfifo_has_data: coverpoint msgfifo_depth { | 
|  | bins has_data = {[1:15]}; | 
|  | } | 
|  | endgroup | 
|  |  | 
|  | `DV_FCOV_INSTANTIATE_CG(cmd_process_cg) | 
|  | endinterface |