Module Definition
dashboard | hierarchy | modlist | groups | tests | asserts



Module Instance : tb.dut.u_edn_core.gen_ep_blk[0].u_edn_ack_sm_ep

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.14 100.00 100.00 85.71 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.14 100.00 100.00 85.71 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
97.31 100.00 91.03 98.23 100.00 u_edn_core


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
u_state_regs 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_edn_core.gen_ep_blk[2].u_edn_ack_sm_ep

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.14 100.00 100.00 85.71 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.14 100.00 100.00 85.71 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
97.31 100.00 91.03 98.23 100.00 u_edn_core


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
u_state_regs 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_edn_core.gen_ep_blk[4].u_edn_ack_sm_ep

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.14 100.00 100.00 85.71 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.14 100.00 100.00 85.71 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
97.31 100.00 91.03 98.23 100.00 u_edn_core


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
u_state_regs 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_edn_core.gen_ep_blk[5].u_edn_ack_sm_ep

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.14 100.00 100.00 85.71 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.14 100.00 100.00 85.71 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
97.31 100.00 91.03 98.23 100.00 u_edn_core


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
u_state_regs 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_edn_core.gen_ep_blk[6].u_edn_ack_sm_ep

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.14 100.00 100.00 85.71 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.14 100.00 100.00 85.71 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
97.31 100.00 91.03 98.23 100.00 u_edn_core


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
u_state_regs 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_edn_core.gen_ep_blk[1].u_edn_ack_sm_ep

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.57 100.00 100.00 92.86 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.57 100.00 100.00 92.86 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
97.31 100.00 91.03 98.23 100.00 u_edn_core


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
u_state_regs 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_edn_core.gen_ep_blk[3].u_edn_ack_sm_ep

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.57 100.00 100.00 92.86 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.57 100.00 100.00 92.86 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
97.31 100.00 91.03 98.23 100.00 u_edn_core


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
u_state_regs 100.00 100.00 100.00 100.00

Line Coverage for Module : edn_ack_sm
Line No.TotalCoveredPercent
TOTAL3232100.00
ALWAYS5233100.00
ALWAYS552929100.00

51 52 3/3 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) Tests: T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled): 52.1 `ifdef SIMULATION 52.2 prim_sparse_fsm_flop #( 52.3 .StateEnumT(state_e), 52.4 .Width($bits(state_e)), 52.5 .ResetValue($bits(state_e)'(Disabled)), 52.6 .EnableAlertTriggerSVA(1), 52.7 .CustomForceName("state_q") 52.8 ) u_state_regs ( 52.9 .clk_i ( clk_i ), 52.10 .rst_ni ( rst_ni ), 52.11 .state_i ( state_d ), 52.12 .state_o ( ) 52.13 ); 52.14 always_ff @(posedge clk_i or negedge rst_ni) begin 52.15 1/1 if (!rst_ni) begin Tests: T1 T2 T3  52.16 1/1 state_q <= Disabled; Tests: T1 T2 T3  52.17 end else begin 52.18 1/1 state_q <= state_d; Tests: T1 T2 T3  52.19 end 52.20 end 52.21 u_state_regs_A: assert property (@(posedge clk_i) disable iff ((!rst_ni) !== '0) (state_q === u_state_regs.state_o)) 52.22 else begin 52.23 `ifdef UVM 52.24 uvm_pkg::uvm_report_error("ASSERT FAILED", "u_state_regs_A", uvm_pkg::UVM_NONE, 52.25 "../src/lowrisc_ip_edn_0.1/rtl/edn_ack_sm.sv", 52, "", 1); 52.26 `else 52.27 $error("%0t: (%0s:%0d) [%m] [ASSERT FAILED] %0s", $time, `__FILE__, `__LINE__, 52.28 `PRIM_STRINGIFY(u_state_regs_A)); 52.29 `endif 52.30 end 52.31 `else 52.32 prim_sparse_fsm_flop #( 52.33 .StateEnumT(state_e), 52.34 .Width($bits(state_e)), 52.35 .ResetValue($bits(state_e)'(Disabled)), 52.36 .EnableAlertTriggerSVA(1) 52.37 ) u_state_regs ( 52.38 .clk_i ( `PRIM_FLOP_CLK ), 52.39 .rst_ni ( `PRIM_FLOP_RST ), 52.40 .state_i ( state_d ), 52.41 .state_o ( state_q ) 52.42 ); 52.43 `endif53 54 always_comb begin 55 1/1 state_d = state_q; Tests: T1 T2 T3  56 1/1 ack_o = 1'b0; Tests: T1 T2 T3  57 1/1 fifo_clr_o = 1'b0; Tests: T1 T2 T3  58 1/1 fifo_pop_o = 1'b0; Tests: T1 T2 T3  59 1/1 ack_sm_err_o = 1'b0; Tests: T1 T2 T3  60 1/1 unique case (state_q) Tests: T1 T2 T3  61 Disabled: begin 62 1/1 if (enable_i) begin Tests: T1 T2 T3  63 1/1 state_d = EndPointClear; Tests: T1 T2 T3  64 1/1 fifo_clr_o = 1'b1; Tests: T1 T2 T3  65 end MISSING_ELSE 66 end 67 EndPointClear: begin 68 1/1 state_d = Idle; Tests: T1 T2 T3  69 end 70 Idle: begin 71 1/1 if (req_i) begin Tests: T1 T2 T3  72 1/1 if (fifo_not_empty_i) begin Tests: T1 T2 T3  73 1/1 fifo_pop_o = 1'b1; Tests: T1 T2 T3  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T1 T2 T3  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T1 T2 T3  80 1/1 state_d = AckPls; Tests: T1 T2 T3  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T1 T2 T3  85 1/1 state_d = Idle; Tests: T1 T2 T3  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T6 T16 T31  89 end 90 default: begin 91 ack_sm_err_o = 1'b1; 92 state_d = Error; 93 end 94 endcase // unique case (state_q) 95 96 // If local escalation is seen, transition directly to 97 // error state. 98 1/1 if (local_escalate_i) begin Tests: T1 T2 T3  99 1/1 state_d = Error; Tests: T6 T16 T31  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T6 T16 T31  102 1/1 fifo_clr_o = 1'b0; Tests: T6 T16 T31  103 1/1 fifo_pop_o = 1'b0; Tests: T6 T16 T31  104 1/1 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin Tests: T1 T2 T3  105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 1/1 state_d = Disabled; Tests: T5 T9 T6  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T5 T9 T6  110 1/1 fifo_pop_o = 1'b0; Tests: T5 T9 T6  111 1/1 fifo_clr_o = 1'b0; Tests: T5 T9 T6  112 end MISSING_ELSE

Cond Coverage for Module : edn_ack_sm
TotalCoveredPercent
Conditions33100.00
Logical33100.00
Non-Logical00
Event00

 LINE       104
 EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
             ------1------    ----------------------------2---------------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT5,T9,T6

FSM Coverage for Module : edn_ack_sm
Summary for FSM :: state_q
TotalCoveredPercent
States 6 6 100.00 (Not included in score)
Transitions 14 13 92.86
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
states   Line No.   Covered   Tests   
AckPls 80 Covered T1,T2,T3
DataWait 75 Covered T1,T2,T3
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T6,T16,T31
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Covered T210,T211
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T1,T2,T3
DataWait->AckPls 80 Covered T1,T2,T3
DataWait->Disabled 107 Covered T14,T45,T19
DataWait->Error 99 Covered T7,T61,T173
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T16,T17,T18
EndPointClear->Disabled 107 Covered T212,T119,T108
EndPointClear->Error 99 Covered T16,T17,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T1,T2,T3
Idle->Disabled 107 Covered T4,T5,T9
Idle->Error 99 Covered T6,T16,T31



Branch Coverage for Module : edn_ack_sm
Line No.TotalCoveredPercent
Branches 16 16 100.00
IF 52 2 2 100.00
CASE 60 11 11 100.00
IF 98 3 3 100.00


52 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


60 unique case (state_q) -1- 61 Disabled: begin 62 if (enable_i) begin -2- 63 state_d = EndPointClear; ==> 64 fifo_clr_o = 1'b1; 65 end MISSING_ELSE ==> 66 end 67 EndPointClear: begin 68 state_d = Idle; ==> 69 end 70 Idle: begin 71 if (req_i) begin -3- 72 if (fifo_not_empty_i) begin -4- 73 fifo_pop_o = 1'b1; ==> 74 end MISSING_ELSE ==> 75 state_d = DataWait; 76 end MISSING_ELSE ==> 77 end 78 DataWait: begin 79 if (fifo_not_empty_i) begin -5- 80 state_d = AckPls; ==> 81 end MISSING_ELSE ==> 82 end 83 AckPls: begin 84 ack_o = 1'b1; ==> 85 state_d = Idle; 86 end 87 Error: begin 88 ack_sm_err_o = 1'b1; ==> 89 end 90 default: begin 91 ack_sm_err_o = 1'b1; ==>

Branches:
-1--2--3--4--5-StatusTests
Disabled 1 - - - Covered T1,T2,T3
Disabled 0 - - - Covered T1,T2,T3
EndPointClear - - - - Covered T1,T2,T3
Idle - 1 1 - Covered T1,T2,T3
Idle - 1 0 - Covered T1,T2,T3
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T1,T2,T3
DataWait - - - 0 Covered T1,T2,T3
AckPls - - - - Covered T1,T2,T3
Error - - - - Covered T6,T16,T31
default - - - - Covered T6,T16,T17


98 if (local_escalate_i) begin -1- 99 state_d = Error; ==> 100 // Tie off outputs, except for ack_sm_err_o. 101 ack_o = 1'b0; 102 fifo_clr_o = 1'b0; 103 fifo_pop_o = 1'b0; 104 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin -2- 105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 state_d = Disabled; ==> 108 // Tie off all outputs, except for ack_sm_err_o. 109 ack_o = 1'b0; 110 fifo_pop_o = 1'b0; 111 fifo_clr_o = 1'b0; 112 end MISSING_ELSE ==>

Branches:
-1--2-StatusTests
1 - Covered T6,T16,T31
0 1 Covered T5,T9,T6
0 0 Covered T1,T2,T3


Assert Coverage for Module : edn_ack_sm
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 3 3 100.00 3 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 3 3 100.00 3 100.00




Assertion Details

Name   Attempts   Real Successes   Failures   Incomplete   
AckSmErrorStStable_A 1392663006 960101 0 0
FpvSecCmErrorStEscalate_A 1392663006 966457 0 0
u_state_regs_A 1392626099 1391460249 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1392663006 960101 0 0
T6 17479 7608 0 0
T7 0 8057 0 0
T10 21609 0 0 0
T16 352163 154168 0 0
T17 0 68075 0 0
T18 0 46193 0 0
T24 4648 0 0 0
T25 8512 0 0 0
T26 6853 0 0 0
T30 25095 0 0 0
T31 14882 7756 0 0
T56 79506 0 0 0
T67 7672 0 0 0
T68 0 4066 0 0
T69 0 4381 0 0
T70 0 4542 0 0
T209 0 7720 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1392663006 966457 0 0
T6 17479 7615 0 0
T7 0 8064 0 0
T10 21609 0 0 0
T16 352163 155988 0 0
T17 0 68985 0 0
T18 0 47103 0 0
T24 4648 0 0 0
T25 8512 0 0 0
T26 6853 0 0 0
T30 25095 0 0 0
T31 14882 7763 0 0
T56 79506 0 0 0
T67 7672 0 0 0
T68 0 4073 0 0
T69 0 4388 0 0
T70 0 4549 0 0
T209 0 7727 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1392626099 1391460249 0 0
T1 9632 9044 0 0
T2 8484 8120 0 0
T3 15386 14798 0 0
T4 41272 39690 0 0
T5 4818 3803 0 0
T6 17174 16082 0 0
T9 12369 11928 0 0
T10 21609 20958 0 0
T24 4648 4116 0 0
T25 8512 7875 0 0

Line Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[0].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
TOTAL3232100.00
ALWAYS5233100.00
ALWAYS552929100.00

51 52 3/3 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) Tests: T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled): 52.1 `ifdef SIMULATION 52.2 prim_sparse_fsm_flop #( 52.3 .StateEnumT(state_e), 52.4 .Width($bits(state_e)), 52.5 .ResetValue($bits(state_e)'(Disabled)), 52.6 .EnableAlertTriggerSVA(1), 52.7 .CustomForceName("state_q") 52.8 ) u_state_regs ( 52.9 .clk_i ( clk_i ), 52.10 .rst_ni ( rst_ni ), 52.11 .state_i ( state_d ), 52.12 .state_o ( ) 52.13 ); 52.14 always_ff @(posedge clk_i or negedge rst_ni) begin 52.15 1/1 if (!rst_ni) begin Tests: T1 T2 T3  52.16 1/1 state_q <= Disabled; Tests: T1 T2 T3  52.17 end else begin 52.18 1/1 state_q <= state_d; Tests: T1 T2 T3  52.19 end 52.20 end 52.21 u_state_regs_A: assert property (@(posedge clk_i) disable iff ((!rst_ni) !== '0) (state_q === u_state_regs.state_o)) 52.22 else begin 52.23 `ifdef UVM 52.24 uvm_pkg::uvm_report_error("ASSERT FAILED", "u_state_regs_A", uvm_pkg::UVM_NONE, 52.25 "../src/lowrisc_ip_edn_0.1/rtl/edn_ack_sm.sv", 52, "", 1); 52.26 `else 52.27 $error("%0t: (%0s:%0d) [%m] [ASSERT FAILED] %0s", $time, `__FILE__, `__LINE__, 52.28 `PRIM_STRINGIFY(u_state_regs_A)); 52.29 `endif 52.30 end 52.31 `else 52.32 prim_sparse_fsm_flop #( 52.33 .StateEnumT(state_e), 52.34 .Width($bits(state_e)), 52.35 .ResetValue($bits(state_e)'(Disabled)), 52.36 .EnableAlertTriggerSVA(1) 52.37 ) u_state_regs ( 52.38 .clk_i ( `PRIM_FLOP_CLK ), 52.39 .rst_ni ( `PRIM_FLOP_RST ), 52.40 .state_i ( state_d ), 52.41 .state_o ( state_q ) 52.42 ); 52.43 `endif53 54 always_comb begin 55 1/1 state_d = state_q; Tests: T1 T2 T3  56 1/1 ack_o = 1'b0; Tests: T1 T2 T3  57 1/1 fifo_clr_o = 1'b0; Tests: T1 T2 T3  58 1/1 fifo_pop_o = 1'b0; Tests: T1 T2 T3  59 1/1 ack_sm_err_o = 1'b0; Tests: T1 T2 T3  60 1/1 unique case (state_q) Tests: T1 T2 T3  61 Disabled: begin 62 1/1 if (enable_i) begin Tests: T1 T2 T3  63 1/1 state_d = EndPointClear; Tests: T1 T2 T3  64 1/1 fifo_clr_o = 1'b1; Tests: T1 T2 T3  65 end MISSING_ELSE 66 end 67 EndPointClear: begin 68 1/1 state_d = Idle; Tests: T1 T2 T3  69 end 70 Idle: begin 71 1/1 if (req_i) begin Tests: T1 T2 T3  72 1/1 if (fifo_not_empty_i) begin Tests: T1 T2 T3  73 1/1 fifo_pop_o = 1'b1; Tests: T1 T2 T3  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T1 T2 T3  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T1 T2 T3  80 1/1 state_d = AckPls; Tests: T1 T2 T3  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T1 T2 T3  85 1/1 state_d = Idle; Tests: T1 T2 T3  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T6 T16 T31  89 end 90 default: begin 91 ack_sm_err_o = 1'b1; 92 state_d = Error; 93 end 94 endcase // unique case (state_q) 95 96 // If local escalation is seen, transition directly to 97 // error state. 98 1/1 if (local_escalate_i) begin Tests: T1 T2 T3  99 1/1 state_d = Error; Tests: T6 T16 T31  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T6 T16 T31  102 1/1 fifo_clr_o = 1'b0; Tests: T6 T16 T31  103 1/1 fifo_pop_o = 1'b0; Tests: T6 T16 T31  104 1/1 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin Tests: T1 T2 T3  105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 1/1 state_d = Disabled; Tests: T5 T9 T6  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T5 T9 T6  110 1/1 fifo_pop_o = 1'b0; Tests: T5 T9 T6  111 1/1 fifo_clr_o = 1'b0; Tests: T5 T9 T6  112 end MISSING_ELSE

Cond Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[0].u_edn_ack_sm_ep
TotalCoveredPercent
Conditions33100.00
Logical33100.00
Non-Logical00
Event00

 LINE       104
 EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
             ------1------    ----------------------------2---------------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT5,T9,T6

FSM Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[0].u_edn_ack_sm_ep
Summary for FSM :: state_q
TotalCoveredPercent
States 6 6 100.00 (Not included in score)
Transitions 14 12 85.71
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
states   Line No.   Covered   Tests   
AckPls 80 Covered T1,T2,T3
DataWait 75 Covered T1,T2,T3
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T6,T16,T31
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Not Covered
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T1,T2,T3
DataWait->AckPls 80 Covered T1,T2,T3
DataWait->Disabled 107 Covered T184,T213,T214
DataWait->Error 99 Covered T7,T61,T215
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T16,T17,T18
EndPointClear->Disabled 107 Covered T212,T119,T108
EndPointClear->Error 99 Covered T16,T17,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T1,T2,T3
Idle->Disabled 107 Covered T4,T5,T9
Idle->Error 99 Covered T16,T31,T17



Branch Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[0].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
Branches 16 16 100.00
IF 52 2 2 100.00
CASE 60 11 11 100.00
IF 98 3 3 100.00


52 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


60 unique case (state_q) -1- 61 Disabled: begin 62 if (enable_i) begin -2- 63 state_d = EndPointClear; ==> 64 fifo_clr_o = 1'b1; 65 end MISSING_ELSE ==> 66 end 67 EndPointClear: begin 68 state_d = Idle; ==> 69 end 70 Idle: begin 71 if (req_i) begin -3- 72 if (fifo_not_empty_i) begin -4- 73 fifo_pop_o = 1'b1; ==> 74 end MISSING_ELSE ==> 75 state_d = DataWait; 76 end MISSING_ELSE ==> 77 end 78 DataWait: begin 79 if (fifo_not_empty_i) begin -5- 80 state_d = AckPls; ==> 81 end MISSING_ELSE ==> 82 end 83 AckPls: begin 84 ack_o = 1'b1; ==> 85 state_d = Idle; 86 end 87 Error: begin 88 ack_sm_err_o = 1'b1; ==> 89 end 90 default: begin 91 ack_sm_err_o = 1'b1; ==>

Branches:
-1--2--3--4--5-StatusTests
Disabled 1 - - - Covered T1,T2,T3
Disabled 0 - - - Covered T1,T2,T3
EndPointClear - - - - Covered T1,T2,T3
Idle - 1 1 - Covered T1,T2,T3
Idle - 1 0 - Covered T1,T2,T3
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T1,T2,T3
DataWait - - - 0 Covered T1,T2,T3
AckPls - - - - Covered T1,T2,T3
Error - - - - Covered T6,T16,T31
default - - - - Covered T6,T16,T17


98 if (local_escalate_i) begin -1- 99 state_d = Error; ==> 100 // Tie off outputs, except for ack_sm_err_o. 101 ack_o = 1'b0; 102 fifo_clr_o = 1'b0; 103 fifo_pop_o = 1'b0; 104 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin -2- 105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 state_d = Disabled; ==> 108 // Tie off all outputs, except for ack_sm_err_o. 109 ack_o = 1'b0; 110 fifo_pop_o = 1'b0; 111 fifo_clr_o = 1'b0; 112 end MISSING_ELSE ==>

Branches:
-1--2-StatusTests
1 - Covered T6,T16,T31
0 1 Covered T5,T9,T6
0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[0].u_edn_ack_sm_ep
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 3 3 100.00 3 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 3 3 100.00 3 100.00




Assertion Details

Name   Attempts   Real Successes   Failures   Incomplete   
AckSmErrorStStable_A 198951858 135143 0 0
FpvSecCmErrorStEscalate_A 198951858 136051 0 0
u_state_regs_A 198914951 198748401 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 135143 0 0
T6 2497 1044 0 0
T7 0 1151 0 0
T10 3087 0 0 0
T16 50309 22024 0 0
T17 0 9725 0 0
T18 0 6599 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1108 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 538 0 0
T69 0 583 0 0
T70 0 606 0 0
T209 0 1060 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 136051 0 0
T6 2497 1045 0 0
T7 0 1152 0 0
T10 3087 0 0 0
T16 50309 22284 0 0
T17 0 9855 0 0
T18 0 6729 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1109 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 539 0 0
T69 0 584 0 0
T70 0 607 0 0
T209 0 1061 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198914951 198748401 0 0
T1 1376 1292 0 0
T2 1212 1160 0 0
T3 2198 2114 0 0
T4 5896 5670 0 0
T5 642 497 0 0
T6 2192 2036 0 0
T9 1767 1704 0 0
T10 3087 2994 0 0
T24 664 588 0 0
T25 1216 1125 0 0

Line Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[2].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
TOTAL3232100.00
ALWAYS5233100.00
ALWAYS552929100.00

51 52 3/3 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) Tests: T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled): 52.1 `ifdef SIMULATION 52.2 prim_sparse_fsm_flop #( 52.3 .StateEnumT(state_e), 52.4 .Width($bits(state_e)), 52.5 .ResetValue($bits(state_e)'(Disabled)), 52.6 .EnableAlertTriggerSVA(1), 52.7 .CustomForceName("state_q") 52.8 ) u_state_regs ( 52.9 .clk_i ( clk_i ), 52.10 .rst_ni ( rst_ni ), 52.11 .state_i ( state_d ), 52.12 .state_o ( ) 52.13 ); 52.14 always_ff @(posedge clk_i or negedge rst_ni) begin 52.15 1/1 if (!rst_ni) begin Tests: T1 T2 T3  52.16 1/1 state_q <= Disabled; Tests: T1 T2 T3  52.17 end else begin 52.18 1/1 state_q <= state_d; Tests: T1 T2 T3  52.19 end 52.20 end 52.21 u_state_regs_A: assert property (@(posedge clk_i) disable iff ((!rst_ni) !== '0) (state_q === u_state_regs.state_o)) 52.22 else begin 52.23 `ifdef UVM 52.24 uvm_pkg::uvm_report_error("ASSERT FAILED", "u_state_regs_A", uvm_pkg::UVM_NONE, 52.25 "../src/lowrisc_ip_edn_0.1/rtl/edn_ack_sm.sv", 52, "", 1); 52.26 `else 52.27 $error("%0t: (%0s:%0d) [%m] [ASSERT FAILED] %0s", $time, `__FILE__, `__LINE__, 52.28 `PRIM_STRINGIFY(u_state_regs_A)); 52.29 `endif 52.30 end 52.31 `else 52.32 prim_sparse_fsm_flop #( 52.33 .StateEnumT(state_e), 52.34 .Width($bits(state_e)), 52.35 .ResetValue($bits(state_e)'(Disabled)), 52.36 .EnableAlertTriggerSVA(1) 52.37 ) u_state_regs ( 52.38 .clk_i ( `PRIM_FLOP_CLK ), 52.39 .rst_ni ( `PRIM_FLOP_RST ), 52.40 .state_i ( state_d ), 52.41 .state_o ( state_q ) 52.42 ); 52.43 `endif53 54 always_comb begin 55 1/1 state_d = state_q; Tests: T1 T2 T3  56 1/1 ack_o = 1'b0; Tests: T1 T2 T3  57 1/1 fifo_clr_o = 1'b0; Tests: T1 T2 T3  58 1/1 fifo_pop_o = 1'b0; Tests: T1 T2 T3  59 1/1 ack_sm_err_o = 1'b0; Tests: T1 T2 T3  60 1/1 unique case (state_q) Tests: T1 T2 T3  61 Disabled: begin 62 1/1 if (enable_i) begin Tests: T1 T2 T3  63 1/1 state_d = EndPointClear; Tests: T1 T2 T3  64 1/1 fifo_clr_o = 1'b1; Tests: T1 T2 T3  65 end MISSING_ELSE 66 end 67 EndPointClear: begin 68 1/1 state_d = Idle; Tests: T1 T2 T3  69 end 70 Idle: begin 71 1/1 if (req_i) begin Tests: T1 T2 T3  72 1/1 if (fifo_not_empty_i) begin Tests: T3 T9 T30  73 1/1 fifo_pop_o = 1'b1; Tests: T3 T9 T30  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T3 T9 T30  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T3 T9 T30  80 1/1 state_d = AckPls; Tests: T3 T9 T30  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T3 T9 T30  85 1/1 state_d = Idle; Tests: T3 T9 T30  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T6 T16 T31  89 end 90 default: begin 91 ack_sm_err_o = 1'b1; 92 state_d = Error; 93 end 94 endcase // unique case (state_q) 95 96 // If local escalation is seen, transition directly to 97 // error state. 98 1/1 if (local_escalate_i) begin Tests: T1 T2 T3  99 1/1 state_d = Error; Tests: T6 T16 T31  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T6 T16 T31  102 1/1 fifo_clr_o = 1'b0; Tests: T6 T16 T31  103 1/1 fifo_pop_o = 1'b0; Tests: T6 T16 T31  104 1/1 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin Tests: T1 T2 T3  105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 1/1 state_d = Disabled; Tests: T5 T9 T6  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T5 T9 T6  110 1/1 fifo_pop_o = 1'b0; Tests: T5 T9 T6  111 1/1 fifo_clr_o = 1'b0; Tests: T5 T9 T6  112 end MISSING_ELSE

Cond Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[2].u_edn_ack_sm_ep
TotalCoveredPercent
Conditions33100.00
Logical33100.00
Non-Logical00
Event00

 LINE       104
 EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
             ------1------    ----------------------------2---------------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT5,T9,T6

FSM Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[2].u_edn_ack_sm_ep
Summary for FSM :: state_q
TotalCoveredPercent
States 6 6 100.00 (Not included in score)
Transitions 14 12 85.71
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
states   Line No.   Covered   Tests   
AckPls 80 Covered T3,T9,T30
DataWait 75 Covered T3,T9,T30
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T6,T16,T31
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Not Covered
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T3,T9,T30
DataWait->AckPls 80 Covered T3,T9,T30
DataWait->Disabled 107 Covered T14,T80,T216
DataWait->Error 99 Covered T173,T149,T162
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T16,T17,T18
EndPointClear->Disabled 107 Covered T212,T119,T108
EndPointClear->Error 99 Covered T16,T17,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T3,T9,T30
Idle->Disabled 107 Covered T4,T5,T9
Idle->Error 99 Covered T6,T16,T31



Branch Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[2].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
Branches 16 16 100.00
IF 52 2 2 100.00
CASE 60 11 11 100.00
IF 98 3 3 100.00


52 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


60 unique case (state_q) -1- 61 Disabled: begin 62 if (enable_i) begin -2- 63 state_d = EndPointClear; ==> 64 fifo_clr_o = 1'b1; 65 end MISSING_ELSE ==> 66 end 67 EndPointClear: begin 68 state_d = Idle; ==> 69 end 70 Idle: begin 71 if (req_i) begin -3- 72 if (fifo_not_empty_i) begin -4- 73 fifo_pop_o = 1'b1; ==> 74 end MISSING_ELSE ==> 75 state_d = DataWait; 76 end MISSING_ELSE ==> 77 end 78 DataWait: begin 79 if (fifo_not_empty_i) begin -5- 80 state_d = AckPls; ==> 81 end MISSING_ELSE ==> 82 end 83 AckPls: begin 84 ack_o = 1'b1; ==> 85 state_d = Idle; 86 end 87 Error: begin 88 ack_sm_err_o = 1'b1; ==> 89 end 90 default: begin 91 ack_sm_err_o = 1'b1; ==>

Branches:
-1--2--3--4--5-StatusTests
Disabled 1 - - - Covered T1,T2,T3
Disabled 0 - - - Covered T1,T2,T3
EndPointClear - - - - Covered T1,T2,T3
Idle - 1 1 - Covered T3,T9,T30
Idle - 1 0 - Covered T3,T9,T30
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T3,T9,T30
DataWait - - - 0 Covered T3,T9,T30
AckPls - - - - Covered T3,T9,T30
Error - - - - Covered T6,T16,T31
default - - - - Covered T16,T17,T18


98 if (local_escalate_i) begin -1- 99 state_d = Error; ==> 100 // Tie off outputs, except for ack_sm_err_o. 101 ack_o = 1'b0; 102 fifo_clr_o = 1'b0; 103 fifo_pop_o = 1'b0; 104 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin -2- 105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 state_d = Disabled; ==> 108 // Tie off all outputs, except for ack_sm_err_o. 109 ack_o = 1'b0; 110 fifo_pop_o = 1'b0; 111 fifo_clr_o = 1'b0; 112 end MISSING_ELSE ==>

Branches:
-1--2-StatusTests
1 - Covered T6,T16,T31
0 1 Covered T5,T9,T6
0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[2].u_edn_ack_sm_ep
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 3 3 100.00 3 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 3 3 100.00 3 100.00




Assertion Details

Name   Attempts   Real Successes   Failures   Incomplete   
AckSmErrorStStable_A 198951858 137493 0 0
FpvSecCmErrorStEscalate_A 198951858 138401 0 0
u_state_regs_A 198951858 198785308 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 137493 0 0
T6 2497 1094 0 0
T7 0 1151 0 0
T10 3087 0 0 0
T16 50309 22024 0 0
T17 0 9725 0 0
T18 0 6599 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1108 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 588 0 0
T69 0 633 0 0
T70 0 656 0 0
T209 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 138401 0 0
T6 2497 1095 0 0
T7 0 1152 0 0
T10 3087 0 0 0
T16 50309 22284 0 0
T17 0 9855 0 0
T18 0 6729 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1109 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 589 0 0
T69 0 634 0 0
T70 0 657 0 0
T209 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 198785308 0 0
T1 1376 1292 0 0
T2 1212 1160 0 0
T3 2198 2114 0 0
T4 5896 5670 0 0
T5 696 551 0 0
T6 2497 2341 0 0
T9 1767 1704 0 0
T10 3087 2994 0 0
T24 664 588 0 0
T25 1216 1125 0 0

Line Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[4].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
TOTAL3232100.00
ALWAYS5233100.00
ALWAYS552929100.00

51 52 3/3 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) Tests: T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled): 52.1 `ifdef SIMULATION 52.2 prim_sparse_fsm_flop #( 52.3 .StateEnumT(state_e), 52.4 .Width($bits(state_e)), 52.5 .ResetValue($bits(state_e)'(Disabled)), 52.6 .EnableAlertTriggerSVA(1), 52.7 .CustomForceName("state_q") 52.8 ) u_state_regs ( 52.9 .clk_i ( clk_i ), 52.10 .rst_ni ( rst_ni ), 52.11 .state_i ( state_d ), 52.12 .state_o ( ) 52.13 ); 52.14 always_ff @(posedge clk_i or negedge rst_ni) begin 52.15 1/1 if (!rst_ni) begin Tests: T1 T2 T3  52.16 1/1 state_q <= Disabled; Tests: T1 T2 T3  52.17 end else begin 52.18 1/1 state_q <= state_d; Tests: T1 T2 T3  52.19 end 52.20 end 52.21 u_state_regs_A: assert property (@(posedge clk_i) disable iff ((!rst_ni) !== '0) (state_q === u_state_regs.state_o)) 52.22 else begin 52.23 `ifdef UVM 52.24 uvm_pkg::uvm_report_error("ASSERT FAILED", "u_state_regs_A", uvm_pkg::UVM_NONE, 52.25 "../src/lowrisc_ip_edn_0.1/rtl/edn_ack_sm.sv", 52, "", 1); 52.26 `else 52.27 $error("%0t: (%0s:%0d) [%m] [ASSERT FAILED] %0s", $time, `__FILE__, `__LINE__, 52.28 `PRIM_STRINGIFY(u_state_regs_A)); 52.29 `endif 52.30 end 52.31 `else 52.32 prim_sparse_fsm_flop #( 52.33 .StateEnumT(state_e), 52.34 .Width($bits(state_e)), 52.35 .ResetValue($bits(state_e)'(Disabled)), 52.36 .EnableAlertTriggerSVA(1) 52.37 ) u_state_regs ( 52.38 .clk_i ( `PRIM_FLOP_CLK ), 52.39 .rst_ni ( `PRIM_FLOP_RST ), 52.40 .state_i ( state_d ), 52.41 .state_o ( state_q ) 52.42 ); 52.43 `endif53 54 always_comb begin 55 1/1 state_d = state_q; Tests: T1 T2 T3  56 1/1 ack_o = 1'b0; Tests: T1 T2 T3  57 1/1 fifo_clr_o = 1'b0; Tests: T1 T2 T3  58 1/1 fifo_pop_o = 1'b0; Tests: T1 T2 T3  59 1/1 ack_sm_err_o = 1'b0; Tests: T1 T2 T3  60 1/1 unique case (state_q) Tests: T1 T2 T3  61 Disabled: begin 62 1/1 if (enable_i) begin Tests: T1 T2 T3  63 1/1 state_d = EndPointClear; Tests: T1 T2 T3  64 1/1 fifo_clr_o = 1'b1; Tests: T1 T2 T3  65 end MISSING_ELSE 66 end 67 EndPointClear: begin 68 1/1 state_d = Idle; Tests: T1 T2 T3  69 end 70 Idle: begin 71 1/1 if (req_i) begin Tests: T1 T2 T3  72 1/1 if (fifo_not_empty_i) begin Tests: T6 T45 T48  73 1/1 fifo_pop_o = 1'b1; Tests: T45 T48 T46  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T6 T45 T48  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T6 T45 T48  80 1/1 state_d = AckPls; Tests: T45 T48 T46  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T45 T48 T46  85 1/1 state_d = Idle; Tests: T45 T48 T46  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T6 T16 T31  89 end 90 default: begin 91 ack_sm_err_o = 1'b1; 92 state_d = Error; 93 end 94 endcase // unique case (state_q) 95 96 // If local escalation is seen, transition directly to 97 // error state. 98 1/1 if (local_escalate_i) begin Tests: T1 T2 T3  99 1/1 state_d = Error; Tests: T6 T16 T31  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T6 T16 T31  102 1/1 fifo_clr_o = 1'b0; Tests: T6 T16 T31  103 1/1 fifo_pop_o = 1'b0; Tests: T6 T16 T31  104 1/1 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin Tests: T1 T2 T3  105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 1/1 state_d = Disabled; Tests: T5 T9 T6  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T5 T9 T6  110 1/1 fifo_pop_o = 1'b0; Tests: T5 T9 T6  111 1/1 fifo_clr_o = 1'b0; Tests: T5 T9 T6  112 end MISSING_ELSE

Cond Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[4].u_edn_ack_sm_ep
TotalCoveredPercent
Conditions33100.00
Logical33100.00
Non-Logical00
Event00

 LINE       104
 EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
             ------1------    ----------------------------2---------------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT5,T9,T6

FSM Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[4].u_edn_ack_sm_ep
Summary for FSM :: state_q
TotalCoveredPercent
States 6 6 100.00 (Not included in score)
Transitions 14 12 85.71
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
states   Line No.   Covered   Tests   
AckPls 80 Covered T45,T48,T46
DataWait 75 Covered T6,T45,T48
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T6,T16,T31
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Not Covered
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T45,T48,T46
DataWait->AckPls 80 Covered T45,T48,T46
DataWait->Disabled 107 Covered T45,T217,T218
DataWait->Error 99 Covered T6,T134,T219
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T16,T17,T18
EndPointClear->Disabled 107 Covered T212,T119,T108
EndPointClear->Error 99 Covered T16,T17,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T6,T45,T48
Idle->Disabled 107 Covered T4,T5,T9
Idle->Error 99 Covered T16,T31,T7



Branch Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[4].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
Branches 16 16 100.00
IF 52 2 2 100.00
CASE 60 11 11 100.00
IF 98 3 3 100.00


52 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


60 unique case (state_q) -1- 61 Disabled: begin 62 if (enable_i) begin -2- 63 state_d = EndPointClear; ==> 64 fifo_clr_o = 1'b1; 65 end MISSING_ELSE ==> 66 end 67 EndPointClear: begin 68 state_d = Idle; ==> 69 end 70 Idle: begin 71 if (req_i) begin -3- 72 if (fifo_not_empty_i) begin -4- 73 fifo_pop_o = 1'b1; ==> 74 end MISSING_ELSE ==> 75 state_d = DataWait; 76 end MISSING_ELSE ==> 77 end 78 DataWait: begin 79 if (fifo_not_empty_i) begin -5- 80 state_d = AckPls; ==> 81 end MISSING_ELSE ==> 82 end 83 AckPls: begin 84 ack_o = 1'b1; ==> 85 state_d = Idle; 86 end 87 Error: begin 88 ack_sm_err_o = 1'b1; ==> 89 end 90 default: begin 91 ack_sm_err_o = 1'b1; ==>

Branches:
-1--2--3--4--5-StatusTests
Disabled 1 - - - Covered T1,T2,T3
Disabled 0 - - - Covered T1,T2,T3
EndPointClear - - - - Covered T1,T2,T3
Idle - 1 1 - Covered T45,T48,T46
Idle - 1 0 - Covered T6,T45,T48
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T45,T48,T46
DataWait - - - 0 Covered T6,T45,T48
AckPls - - - - Covered T45,T48,T46
Error - - - - Covered T6,T16,T31
default - - - - Covered T16,T17,T18


98 if (local_escalate_i) begin -1- 99 state_d = Error; ==> 100 // Tie off outputs, except for ack_sm_err_o. 101 ack_o = 1'b0; 102 fifo_clr_o = 1'b0; 103 fifo_pop_o = 1'b0; 104 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin -2- 105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 state_d = Disabled; ==> 108 // Tie off all outputs, except for ack_sm_err_o. 109 ack_o = 1'b0; 110 fifo_pop_o = 1'b0; 111 fifo_clr_o = 1'b0; 112 end MISSING_ELSE ==>

Branches:
-1--2-StatusTests
1 - Covered T6,T16,T31
0 1 Covered T5,T9,T6
0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[4].u_edn_ack_sm_ep
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 3 3 100.00 3 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 3 3 100.00 3 100.00




Assertion Details

Name   Attempts   Real Successes   Failures   Incomplete   
AckSmErrorStStable_A 198951858 137493 0 0
FpvSecCmErrorStEscalate_A 198951858 138401 0 0
u_state_regs_A 198951858 198785308 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 137493 0 0
T6 2497 1094 0 0
T7 0 1151 0 0
T10 3087 0 0 0
T16 50309 22024 0 0
T17 0 9725 0 0
T18 0 6599 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1108 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 588 0 0
T69 0 633 0 0
T70 0 656 0 0
T209 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 138401 0 0
T6 2497 1095 0 0
T7 0 1152 0 0
T10 3087 0 0 0
T16 50309 22284 0 0
T17 0 9855 0 0
T18 0 6729 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1109 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 589 0 0
T69 0 634 0 0
T70 0 657 0 0
T209 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 198785308 0 0
T1 1376 1292 0 0
T2 1212 1160 0 0
T3 2198 2114 0 0
T4 5896 5670 0 0
T5 696 551 0 0
T6 2497 2341 0 0
T9 1767 1704 0 0
T10 3087 2994 0 0
T24 664 588 0 0
T25 1216 1125 0 0

Line Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[5].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
TOTAL3232100.00
ALWAYS5233100.00
ALWAYS552929100.00

51 52 3/3 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) Tests: T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled): 52.1 `ifdef SIMULATION 52.2 prim_sparse_fsm_flop #( 52.3 .StateEnumT(state_e), 52.4 .Width($bits(state_e)), 52.5 .ResetValue($bits(state_e)'(Disabled)), 52.6 .EnableAlertTriggerSVA(1), 52.7 .CustomForceName("state_q") 52.8 ) u_state_regs ( 52.9 .clk_i ( clk_i ), 52.10 .rst_ni ( rst_ni ), 52.11 .state_i ( state_d ), 52.12 .state_o ( ) 52.13 ); 52.14 always_ff @(posedge clk_i or negedge rst_ni) begin 52.15 1/1 if (!rst_ni) begin Tests: T1 T2 T3  52.16 1/1 state_q <= Disabled; Tests: T1 T2 T3  52.17 end else begin 52.18 1/1 state_q <= state_d; Tests: T1 T2 T3  52.19 end 52.20 end 52.21 u_state_regs_A: assert property (@(posedge clk_i) disable iff ((!rst_ni) !== '0) (state_q === u_state_regs.state_o)) 52.22 else begin 52.23 `ifdef UVM 52.24 uvm_pkg::uvm_report_error("ASSERT FAILED", "u_state_regs_A", uvm_pkg::UVM_NONE, 52.25 "../src/lowrisc_ip_edn_0.1/rtl/edn_ack_sm.sv", 52, "", 1); 52.26 `else 52.27 $error("%0t: (%0s:%0d) [%m] [ASSERT FAILED] %0s", $time, `__FILE__, `__LINE__, 52.28 `PRIM_STRINGIFY(u_state_regs_A)); 52.29 `endif 52.30 end 52.31 `else 52.32 prim_sparse_fsm_flop #( 52.33 .StateEnumT(state_e), 52.34 .Width($bits(state_e)), 52.35 .ResetValue($bits(state_e)'(Disabled)), 52.36 .EnableAlertTriggerSVA(1) 52.37 ) u_state_regs ( 52.38 .clk_i ( `PRIM_FLOP_CLK ), 52.39 .rst_ni ( `PRIM_FLOP_RST ), 52.40 .state_i ( state_d ), 52.41 .state_o ( state_q ) 52.42 ); 52.43 `endif53 54 always_comb begin 55 1/1 state_d = state_q; Tests: T1 T2 T3  56 1/1 ack_o = 1'b0; Tests: T1 T2 T3  57 1/1 fifo_clr_o = 1'b0; Tests: T1 T2 T3  58 1/1 fifo_pop_o = 1'b0; Tests: T1 T2 T3  59 1/1 ack_sm_err_o = 1'b0; Tests: T1 T2 T3  60 1/1 unique case (state_q) Tests: T1 T2 T3  61 Disabled: begin 62 1/1 if (enable_i) begin Tests: T1 T2 T3  63 1/1 state_d = EndPointClear; Tests: T1 T2 T3  64 1/1 fifo_clr_o = 1'b1; Tests: T1 T2 T3  65 end MISSING_ELSE 66 end 67 EndPointClear: begin 68 1/1 state_d = Idle; Tests: T1 T2 T3  69 end 70 Idle: begin 71 1/1 if (req_i) begin Tests: T1 T2 T3  72 1/1 if (fifo_not_empty_i) begin Tests: T3 T31 T52  73 1/1 fifo_pop_o = 1'b1; Tests: T3 T31 T52  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T3 T31 T52  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T3 T31 T52  80 1/1 state_d = AckPls; Tests: T3 T31 T52  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T3 T31 T52  85 1/1 state_d = Idle; Tests: T3 T31 T52  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T6 T16 T31  89 end 90 default: begin 91 ack_sm_err_o = 1'b1; 92 state_d = Error; 93 end 94 endcase // unique case (state_q) 95 96 // If local escalation is seen, transition directly to 97 // error state. 98 1/1 if (local_escalate_i) begin Tests: T1 T2 T3  99 1/1 state_d = Error; Tests: T6 T16 T31  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T6 T16 T31  102 1/1 fifo_clr_o = 1'b0; Tests: T6 T16 T31  103 1/1 fifo_pop_o = 1'b0; Tests: T6 T16 T31  104 1/1 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin Tests: T1 T2 T3  105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 1/1 state_d = Disabled; Tests: T5 T9 T6  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T5 T9 T6  110 1/1 fifo_pop_o = 1'b0; Tests: T5 T9 T6  111 1/1 fifo_clr_o = 1'b0; Tests: T5 T9 T6  112 end MISSING_ELSE

Cond Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[5].u_edn_ack_sm_ep
TotalCoveredPercent
Conditions33100.00
Logical33100.00
Non-Logical00
Event00

 LINE       104
 EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
             ------1------    ----------------------------2---------------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT5,T9,T6

FSM Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[5].u_edn_ack_sm_ep
Summary for FSM :: state_q
TotalCoveredPercent
States 6 6 100.00 (Not included in score)
Transitions 14 12 85.71
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
states   Line No.   Covered   Tests   
AckPls 80 Covered T3,T31,T52
DataWait 75 Covered T3,T31,T52
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T6,T16,T31
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Not Covered
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T3,T31,T52
DataWait->AckPls 80 Covered T3,T31,T52
DataWait->Disabled 107 Covered T94
DataWait->Error 99 Covered T220,T221,T222
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T16,T17,T18
EndPointClear->Disabled 107 Covered T212,T119,T108
EndPointClear->Error 99 Covered T16,T17,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T3,T31,T52
Idle->Disabled 107 Covered T4,T5,T9
Idle->Error 99 Covered T6,T16,T31



Branch Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[5].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
Branches 16 16 100.00
IF 52 2 2 100.00
CASE 60 11 11 100.00
IF 98 3 3 100.00


52 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


60 unique case (state_q) -1- 61 Disabled: begin 62 if (enable_i) begin -2- 63 state_d = EndPointClear; ==> 64 fifo_clr_o = 1'b1; 65 end MISSING_ELSE ==> 66 end 67 EndPointClear: begin 68 state_d = Idle; ==> 69 end 70 Idle: begin 71 if (req_i) begin -3- 72 if (fifo_not_empty_i) begin -4- 73 fifo_pop_o = 1'b1; ==> 74 end MISSING_ELSE ==> 75 state_d = DataWait; 76 end MISSING_ELSE ==> 77 end 78 DataWait: begin 79 if (fifo_not_empty_i) begin -5- 80 state_d = AckPls; ==> 81 end MISSING_ELSE ==> 82 end 83 AckPls: begin 84 ack_o = 1'b1; ==> 85 state_d = Idle; 86 end 87 Error: begin 88 ack_sm_err_o = 1'b1; ==> 89 end 90 default: begin 91 ack_sm_err_o = 1'b1; ==>

Branches:
-1--2--3--4--5-StatusTests
Disabled 1 - - - Covered T1,T2,T3
Disabled 0 - - - Covered T1,T2,T3
EndPointClear - - - - Covered T1,T2,T3
Idle - 1 1 - Covered T3,T31,T52
Idle - 1 0 - Covered T3,T31,T52
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T3,T31,T52
DataWait - - - 0 Covered T3,T52,T91
AckPls - - - - Covered T3,T31,T52
Error - - - - Covered T6,T16,T31
default - - - - Covered T16,T17,T18


98 if (local_escalate_i) begin -1- 99 state_d = Error; ==> 100 // Tie off outputs, except for ack_sm_err_o. 101 ack_o = 1'b0; 102 fifo_clr_o = 1'b0; 103 fifo_pop_o = 1'b0; 104 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin -2- 105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 state_d = Disabled; ==> 108 // Tie off all outputs, except for ack_sm_err_o. 109 ack_o = 1'b0; 110 fifo_pop_o = 1'b0; 111 fifo_clr_o = 1'b0; 112 end MISSING_ELSE ==>

Branches:
-1--2-StatusTests
1 - Covered T6,T16,T31
0 1 Covered T5,T9,T6
0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[5].u_edn_ack_sm_ep
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 3 3 100.00 3 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 3 3 100.00 3 100.00




Assertion Details

Name   Attempts   Real Successes   Failures   Incomplete   
AckSmErrorStStable_A 198951858 137493 0 0
FpvSecCmErrorStEscalate_A 198951858 138401 0 0
u_state_regs_A 198951858 198785308 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 137493 0 0
T6 2497 1094 0 0
T7 0 1151 0 0
T10 3087 0 0 0
T16 50309 22024 0 0
T17 0 9725 0 0
T18 0 6599 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1108 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 588 0 0
T69 0 633 0 0
T70 0 656 0 0
T209 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 138401 0 0
T6 2497 1095 0 0
T7 0 1152 0 0
T10 3087 0 0 0
T16 50309 22284 0 0
T17 0 9855 0 0
T18 0 6729 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1109 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 589 0 0
T69 0 634 0 0
T70 0 657 0 0
T209 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 198785308 0 0
T1 1376 1292 0 0
T2 1212 1160 0 0
T3 2198 2114 0 0
T4 5896 5670 0 0
T5 696 551 0 0
T6 2497 2341 0 0
T9 1767 1704 0 0
T10 3087 2994 0 0
T24 664 588 0 0
T25 1216 1125 0 0

Line Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[6].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
TOTAL3232100.00
ALWAYS5233100.00
ALWAYS552929100.00

51 52 3/3 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) Tests: T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled): 52.1 `ifdef SIMULATION 52.2 prim_sparse_fsm_flop #( 52.3 .StateEnumT(state_e), 52.4 .Width($bits(state_e)), 52.5 .ResetValue($bits(state_e)'(Disabled)), 52.6 .EnableAlertTriggerSVA(1), 52.7 .CustomForceName("state_q") 52.8 ) u_state_regs ( 52.9 .clk_i ( clk_i ), 52.10 .rst_ni ( rst_ni ), 52.11 .state_i ( state_d ), 52.12 .state_o ( ) 52.13 ); 52.14 always_ff @(posedge clk_i or negedge rst_ni) begin 52.15 1/1 if (!rst_ni) begin Tests: T1 T2 T3  52.16 1/1 state_q <= Disabled; Tests: T1 T2 T3  52.17 end else begin 52.18 1/1 state_q <= state_d; Tests: T1 T2 T3  52.19 end 52.20 end 52.21 u_state_regs_A: assert property (@(posedge clk_i) disable iff ((!rst_ni) !== '0) (state_q === u_state_regs.state_o)) 52.22 else begin 52.23 `ifdef UVM 52.24 uvm_pkg::uvm_report_error("ASSERT FAILED", "u_state_regs_A", uvm_pkg::UVM_NONE, 52.25 "../src/lowrisc_ip_edn_0.1/rtl/edn_ack_sm.sv", 52, "", 1); 52.26 `else 52.27 $error("%0t: (%0s:%0d) [%m] [ASSERT FAILED] %0s", $time, `__FILE__, `__LINE__, 52.28 `PRIM_STRINGIFY(u_state_regs_A)); 52.29 `endif 52.30 end 52.31 `else 52.32 prim_sparse_fsm_flop #( 52.33 .StateEnumT(state_e), 52.34 .Width($bits(state_e)), 52.35 .ResetValue($bits(state_e)'(Disabled)), 52.36 .EnableAlertTriggerSVA(1) 52.37 ) u_state_regs ( 52.38 .clk_i ( `PRIM_FLOP_CLK ), 52.39 .rst_ni ( `PRIM_FLOP_RST ), 52.40 .state_i ( state_d ), 52.41 .state_o ( state_q ) 52.42 ); 52.43 `endif53 54 always_comb begin 55 1/1 state_d = state_q; Tests: T1 T2 T3  56 1/1 ack_o = 1'b0; Tests: T1 T2 T3  57 1/1 fifo_clr_o = 1'b0; Tests: T1 T2 T3  58 1/1 fifo_pop_o = 1'b0; Tests: T1 T2 T3  59 1/1 ack_sm_err_o = 1'b0; Tests: T1 T2 T3  60 1/1 unique case (state_q) Tests: T1 T2 T3  61 Disabled: begin 62 1/1 if (enable_i) begin Tests: T1 T2 T3  63 1/1 state_d = EndPointClear; Tests: T1 T2 T3  64 1/1 fifo_clr_o = 1'b1; Tests: T1 T2 T3  65 end MISSING_ELSE 66 end 67 EndPointClear: begin 68 1/1 state_d = Idle; Tests: T1 T2 T3  69 end 70 Idle: begin 71 1/1 if (req_i) begin Tests: T1 T2 T3  72 1/1 if (fifo_not_empty_i) begin Tests: T3 T10 T8  73 1/1 fifo_pop_o = 1'b1; Tests: T3 T10 T21  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T3 T10 T8  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T3 T10 T8  80 1/1 state_d = AckPls; Tests: T3 T10 T21  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T3 T10 T21  85 1/1 state_d = Idle; Tests: T3 T10 T21  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T6 T16 T31  89 end 90 default: begin 91 ack_sm_err_o = 1'b1; 92 state_d = Error; 93 end 94 endcase // unique case (state_q) 95 96 // If local escalation is seen, transition directly to 97 // error state. 98 1/1 if (local_escalate_i) begin Tests: T1 T2 T3  99 1/1 state_d = Error; Tests: T6 T16 T31  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T6 T16 T31  102 1/1 fifo_clr_o = 1'b0; Tests: T6 T16 T31  103 1/1 fifo_pop_o = 1'b0; Tests: T6 T16 T31  104 1/1 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin Tests: T1 T2 T3  105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 1/1 state_d = Disabled; Tests: T5 T9 T6  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T5 T9 T6  110 1/1 fifo_pop_o = 1'b0; Tests: T5 T9 T6  111 1/1 fifo_clr_o = 1'b0; Tests: T5 T9 T6  112 end MISSING_ELSE

Cond Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[6].u_edn_ack_sm_ep
TotalCoveredPercent
Conditions33100.00
Logical33100.00
Non-Logical00
Event00

 LINE       104
 EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
             ------1------    ----------------------------2---------------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT5,T9,T6

FSM Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[6].u_edn_ack_sm_ep
Summary for FSM :: state_q
TotalCoveredPercent
States 6 6 100.00 (Not included in score)
Transitions 14 12 85.71
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
states   Line No.   Covered   Tests   
AckPls 80 Covered T3,T10,T21
DataWait 75 Covered T3,T10,T8
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T6,T16,T31
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Not Covered
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T3,T10,T21
DataWait->AckPls 80 Covered T3,T10,T21
DataWait->Disabled 107 Covered T54,T223,T224
DataWait->Error 99 Covered T8
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T16,T17,T18
EndPointClear->Disabled 107 Covered T212,T119,T108
EndPointClear->Error 99 Covered T16,T17,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T3,T10,T8
Idle->Disabled 107 Covered T4,T5,T9
Idle->Error 99 Covered T6,T16,T31



Branch Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[6].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
Branches 16 16 100.00
IF 52 2 2 100.00
CASE 60 11 11 100.00
IF 98 3 3 100.00


52 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


60 unique case (state_q) -1- 61 Disabled: begin 62 if (enable_i) begin -2- 63 state_d = EndPointClear; ==> 64 fifo_clr_o = 1'b1; 65 end MISSING_ELSE ==> 66 end 67 EndPointClear: begin 68 state_d = Idle; ==> 69 end 70 Idle: begin 71 if (req_i) begin -3- 72 if (fifo_not_empty_i) begin -4- 73 fifo_pop_o = 1'b1; ==> 74 end MISSING_ELSE ==> 75 state_d = DataWait; 76 end MISSING_ELSE ==> 77 end 78 DataWait: begin 79 if (fifo_not_empty_i) begin -5- 80 state_d = AckPls; ==> 81 end MISSING_ELSE ==> 82 end 83 AckPls: begin 84 ack_o = 1'b1; ==> 85 state_d = Idle; 86 end 87 Error: begin 88 ack_sm_err_o = 1'b1; ==> 89 end 90 default: begin 91 ack_sm_err_o = 1'b1; ==>

Branches:
-1--2--3--4--5-StatusTests
Disabled 1 - - - Covered T1,T2,T3
Disabled 0 - - - Covered T1,T2,T3
EndPointClear - - - - Covered T1,T2,T3
Idle - 1 1 - Covered T3,T10,T21
Idle - 1 0 - Covered T3,T10,T8
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T3,T10,T21
DataWait - - - 0 Covered T3,T10,T8
AckPls - - - - Covered T3,T10,T21
Error - - - - Covered T6,T16,T31
default - - - - Covered T16,T17,T18


98 if (local_escalate_i) begin -1- 99 state_d = Error; ==> 100 // Tie off outputs, except for ack_sm_err_o. 101 ack_o = 1'b0; 102 fifo_clr_o = 1'b0; 103 fifo_pop_o = 1'b0; 104 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin -2- 105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 state_d = Disabled; ==> 108 // Tie off all outputs, except for ack_sm_err_o. 109 ack_o = 1'b0; 110 fifo_pop_o = 1'b0; 111 fifo_clr_o = 1'b0; 112 end MISSING_ELSE ==>

Branches:
-1--2-StatusTests
1 - Covered T6,T16,T31
0 1 Covered T5,T9,T6
0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[6].u_edn_ack_sm_ep
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 3 3 100.00 3 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 3 3 100.00 3 100.00




Assertion Details

Name   Attempts   Real Successes   Failures   Incomplete   
AckSmErrorStStable_A 198951858 137493 0 0
FpvSecCmErrorStEscalate_A 198951858 138401 0 0
u_state_regs_A 198951858 198785308 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 137493 0 0
T6 2497 1094 0 0
T7 0 1151 0 0
T10 3087 0 0 0
T16 50309 22024 0 0
T17 0 9725 0 0
T18 0 6599 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1108 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 588 0 0
T69 0 633 0 0
T70 0 656 0 0
T209 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 138401 0 0
T6 2497 1095 0 0
T7 0 1152 0 0
T10 3087 0 0 0
T16 50309 22284 0 0
T17 0 9855 0 0
T18 0 6729 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1109 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 589 0 0
T69 0 634 0 0
T70 0 657 0 0
T209 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 198785308 0 0
T1 1376 1292 0 0
T2 1212 1160 0 0
T3 2198 2114 0 0
T4 5896 5670 0 0
T5 696 551 0 0
T6 2497 2341 0 0
T9 1767 1704 0 0
T10 3087 2994 0 0
T24 664 588 0 0
T25 1216 1125 0 0

Line Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[1].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
TOTAL3232100.00
ALWAYS5233100.00
ALWAYS552929100.00

51 52 3/3 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) Tests: T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled): 52.1 `ifdef SIMULATION 52.2 prim_sparse_fsm_flop #( 52.3 .StateEnumT(state_e), 52.4 .Width($bits(state_e)), 52.5 .ResetValue($bits(state_e)'(Disabled)), 52.6 .EnableAlertTriggerSVA(1), 52.7 .CustomForceName("state_q") 52.8 ) u_state_regs ( 52.9 .clk_i ( clk_i ), 52.10 .rst_ni ( rst_ni ), 52.11 .state_i ( state_d ), 52.12 .state_o ( ) 52.13 ); 52.14 always_ff @(posedge clk_i or negedge rst_ni) begin 52.15 1/1 if (!rst_ni) begin Tests: T1 T2 T3  52.16 1/1 state_q <= Disabled; Tests: T1 T2 T3  52.17 end else begin 52.18 1/1 state_q <= state_d; Tests: T1 T2 T3  52.19 end 52.20 end 52.21 u_state_regs_A: assert property (@(posedge clk_i) disable iff ((!rst_ni) !== '0) (state_q === u_state_regs.state_o)) 52.22 else begin 52.23 `ifdef UVM 52.24 uvm_pkg::uvm_report_error("ASSERT FAILED", "u_state_regs_A", uvm_pkg::UVM_NONE, 52.25 "../src/lowrisc_ip_edn_0.1/rtl/edn_ack_sm.sv", 52, "", 1); 52.26 `else 52.27 $error("%0t: (%0s:%0d) [%m] [ASSERT FAILED] %0s", $time, `__FILE__, `__LINE__, 52.28 `PRIM_STRINGIFY(u_state_regs_A)); 52.29 `endif 52.30 end 52.31 `else 52.32 prim_sparse_fsm_flop #( 52.33 .StateEnumT(state_e), 52.34 .Width($bits(state_e)), 52.35 .ResetValue($bits(state_e)'(Disabled)), 52.36 .EnableAlertTriggerSVA(1) 52.37 ) u_state_regs ( 52.38 .clk_i ( `PRIM_FLOP_CLK ), 52.39 .rst_ni ( `PRIM_FLOP_RST ), 52.40 .state_i ( state_d ), 52.41 .state_o ( state_q ) 52.42 ); 52.43 `endif53 54 always_comb begin 55 1/1 state_d = state_q; Tests: T1 T2 T3  56 1/1 ack_o = 1'b0; Tests: T1 T2 T3  57 1/1 fifo_clr_o = 1'b0; Tests: T1 T2 T3  58 1/1 fifo_pop_o = 1'b0; Tests: T1 T2 T3  59 1/1 ack_sm_err_o = 1'b0; Tests: T1 T2 T3  60 1/1 unique case (state_q) Tests: T1 T2 T3  61 Disabled: begin 62 1/1 if (enable_i) begin Tests: T1 T2 T3  63 1/1 state_d = EndPointClear; Tests: T1 T2 T3  64 1/1 fifo_clr_o = 1'b1; Tests: T1 T2 T3  65 end MISSING_ELSE 66 end 67 EndPointClear: begin 68 1/1 state_d = Idle; Tests: T1 T2 T3  69 end 70 Idle: begin 71 1/1 if (req_i) begin Tests: T1 T2 T3  72 1/1 if (fifo_not_empty_i) begin Tests: T3 T5 T30  73 1/1 fifo_pop_o = 1'b1; Tests: T3 T5 T30  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T3 T5 T30  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T3 T5 T30  80 1/1 state_d = AckPls; Tests: T3 T5 T30  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T3 T5 T30  85 1/1 state_d = Idle; Tests: T3 T5 T30  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T6 T16 T31  89 end 90 default: begin 91 ack_sm_err_o = 1'b1; 92 state_d = Error; 93 end 94 endcase // unique case (state_q) 95 96 // If local escalation is seen, transition directly to 97 // error state. 98 1/1 if (local_escalate_i) begin Tests: T1 T2 T3  99 1/1 state_d = Error; Tests: T6 T16 T31  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T6 T16 T31  102 1/1 fifo_clr_o = 1'b0; Tests: T6 T16 T31  103 1/1 fifo_pop_o = 1'b0; Tests: T6 T16 T31  104 1/1 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin Tests: T1 T2 T3  105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 1/1 state_d = Disabled; Tests: T5 T9 T6  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T5 T9 T6  110 1/1 fifo_pop_o = 1'b0; Tests: T5 T9 T6  111 1/1 fifo_clr_o = 1'b0; Tests: T5 T9 T6  112 end MISSING_ELSE

Cond Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[1].u_edn_ack_sm_ep
TotalCoveredPercent
Conditions33100.00
Logical33100.00
Non-Logical00
Event00

 LINE       104
 EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
             ------1------    ----------------------------2---------------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT5,T9,T6

FSM Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[1].u_edn_ack_sm_ep
Summary for FSM :: state_q
TotalCoveredPercent
States 6 6 100.00 (Not included in score)
Transitions 14 13 92.86
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
states   Line No.   Covered   Tests   
AckPls 80 Covered T3,T5,T30
DataWait 75 Covered T3,T5,T30
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T6,T16,T31
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Covered T210
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T3,T5,T30
DataWait->AckPls 80 Covered T3,T5,T30
DataWait->Disabled 107 Covered T19,T21,T71
DataWait->Error 99 Covered T154,T194,T207
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T16,T17,T18
EndPointClear->Disabled 107 Covered T212,T119,T108
EndPointClear->Error 99 Covered T16,T17,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T3,T5,T30
Idle->Disabled 107 Covered T4,T5,T9
Idle->Error 99 Covered T6,T16,T31



Branch Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[1].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
Branches 16 16 100.00
IF 52 2 2 100.00
CASE 60 11 11 100.00
IF 98 3 3 100.00


52 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


60 unique case (state_q) -1- 61 Disabled: begin 62 if (enable_i) begin -2- 63 state_d = EndPointClear; ==> 64 fifo_clr_o = 1'b1; 65 end MISSING_ELSE ==> 66 end 67 EndPointClear: begin 68 state_d = Idle; ==> 69 end 70 Idle: begin 71 if (req_i) begin -3- 72 if (fifo_not_empty_i) begin -4- 73 fifo_pop_o = 1'b1; ==> 74 end MISSING_ELSE ==> 75 state_d = DataWait; 76 end MISSING_ELSE ==> 77 end 78 DataWait: begin 79 if (fifo_not_empty_i) begin -5- 80 state_d = AckPls; ==> 81 end MISSING_ELSE ==> 82 end 83 AckPls: begin 84 ack_o = 1'b1; ==> 85 state_d = Idle; 86 end 87 Error: begin 88 ack_sm_err_o = 1'b1; ==> 89 end 90 default: begin 91 ack_sm_err_o = 1'b1; ==>

Branches:
-1--2--3--4--5-StatusTests
Disabled 1 - - - Covered T1,T2,T3
Disabled 0 - - - Covered T1,T2,T3
EndPointClear - - - - Covered T1,T2,T3
Idle - 1 1 - Covered T3,T5,T30
Idle - 1 0 - Covered T3,T5,T30
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T3,T5,T30
DataWait - - - 0 Covered T3,T30,T19
AckPls - - - - Covered T3,T5,T30
Error - - - - Covered T6,T16,T31
default - - - - Covered T16,T17,T18


98 if (local_escalate_i) begin -1- 99 state_d = Error; ==> 100 // Tie off outputs, except for ack_sm_err_o. 101 ack_o = 1'b0; 102 fifo_clr_o = 1'b0; 103 fifo_pop_o = 1'b0; 104 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin -2- 105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 state_d = Disabled; ==> 108 // Tie off all outputs, except for ack_sm_err_o. 109 ack_o = 1'b0; 110 fifo_pop_o = 1'b0; 111 fifo_clr_o = 1'b0; 112 end MISSING_ELSE ==>

Branches:
-1--2-StatusTests
1 - Covered T6,T16,T31
0 1 Covered T5,T9,T6
0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[1].u_edn_ack_sm_ep
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 3 3 100.00 3 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 3 3 100.00 3 100.00




Assertion Details

Name   Attempts   Real Successes   Failures   Incomplete   
AckSmErrorStStable_A 198951858 137493 0 0
FpvSecCmErrorStEscalate_A 198951858 138401 0 0
u_state_regs_A 198951858 198785308 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 137493 0 0
T6 2497 1094 0 0
T7 0 1151 0 0
T10 3087 0 0 0
T16 50309 22024 0 0
T17 0 9725 0 0
T18 0 6599 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1108 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 588 0 0
T69 0 633 0 0
T70 0 656 0 0
T209 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 138401 0 0
T6 2497 1095 0 0
T7 0 1152 0 0
T10 3087 0 0 0
T16 50309 22284 0 0
T17 0 9855 0 0
T18 0 6729 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1109 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 589 0 0
T69 0 634 0 0
T70 0 657 0 0
T209 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 198785308 0 0
T1 1376 1292 0 0
T2 1212 1160 0 0
T3 2198 2114 0 0
T4 5896 5670 0 0
T5 696 551 0 0
T6 2497 2341 0 0
T9 1767 1704 0 0
T10 3087 2994 0 0
T24 664 588 0 0
T25 1216 1125 0 0

Line Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[3].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
TOTAL3232100.00
ALWAYS5233100.00
ALWAYS552929100.00

51 52 3/3 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) Tests: T1 T2 T3  | T1 T2 T3  | T1 T2 T3 
PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled): 52.1 `ifdef SIMULATION 52.2 prim_sparse_fsm_flop #( 52.3 .StateEnumT(state_e), 52.4 .Width($bits(state_e)), 52.5 .ResetValue($bits(state_e)'(Disabled)), 52.6 .EnableAlertTriggerSVA(1), 52.7 .CustomForceName("state_q") 52.8 ) u_state_regs ( 52.9 .clk_i ( clk_i ), 52.10 .rst_ni ( rst_ni ), 52.11 .state_i ( state_d ), 52.12 .state_o ( ) 52.13 ); 52.14 always_ff @(posedge clk_i or negedge rst_ni) begin 52.15 1/1 if (!rst_ni) begin Tests: T1 T2 T3  52.16 1/1 state_q <= Disabled; Tests: T1 T2 T3  52.17 end else begin 52.18 1/1 state_q <= state_d; Tests: T1 T2 T3  52.19 end 52.20 end 52.21 u_state_regs_A: assert property (@(posedge clk_i) disable iff ((!rst_ni) !== '0) (state_q === u_state_regs.state_o)) 52.22 else begin 52.23 `ifdef UVM 52.24 uvm_pkg::uvm_report_error("ASSERT FAILED", "u_state_regs_A", uvm_pkg::UVM_NONE, 52.25 "../src/lowrisc_ip_edn_0.1/rtl/edn_ack_sm.sv", 52, "", 1); 52.26 `else 52.27 $error("%0t: (%0s:%0d) [%m] [ASSERT FAILED] %0s", $time, `__FILE__, `__LINE__, 52.28 `PRIM_STRINGIFY(u_state_regs_A)); 52.29 `endif 52.30 end 52.31 `else 52.32 prim_sparse_fsm_flop #( 52.33 .StateEnumT(state_e), 52.34 .Width($bits(state_e)), 52.35 .ResetValue($bits(state_e)'(Disabled)), 52.36 .EnableAlertTriggerSVA(1) 52.37 ) u_state_regs ( 52.38 .clk_i ( `PRIM_FLOP_CLK ), 52.39 .rst_ni ( `PRIM_FLOP_RST ), 52.40 .state_i ( state_d ), 52.41 .state_o ( state_q ) 52.42 ); 52.43 `endif53 54 always_comb begin 55 1/1 state_d = state_q; Tests: T1 T2 T3  56 1/1 ack_o = 1'b0; Tests: T1 T2 T3  57 1/1 fifo_clr_o = 1'b0; Tests: T1 T2 T3  58 1/1 fifo_pop_o = 1'b0; Tests: T1 T2 T3  59 1/1 ack_sm_err_o = 1'b0; Tests: T1 T2 T3  60 1/1 unique case (state_q) Tests: T1 T2 T3  61 Disabled: begin 62 1/1 if (enable_i) begin Tests: T1 T2 T3  63 1/1 state_d = EndPointClear; Tests: T1 T2 T3  64 1/1 fifo_clr_o = 1'b1; Tests: T1 T2 T3  65 end MISSING_ELSE 66 end 67 EndPointClear: begin 68 1/1 state_d = Idle; Tests: T1 T2 T3  69 end 70 Idle: begin 71 1/1 if (req_i) begin Tests: T1 T2 T3  72 1/1 if (fifo_not_empty_i) begin Tests: T28 T19 T42  73 1/1 fifo_pop_o = 1'b1; Tests: T28 T19 T42  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T28 T19 T42  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T28 T19 T42  80 1/1 state_d = AckPls; Tests: T28 T19 T42  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T28 T19 T42  85 1/1 state_d = Idle; Tests: T28 T19 T42  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T6 T16 T31  89 end 90 default: begin 91 ack_sm_err_o = 1'b1; 92 state_d = Error; 93 end 94 endcase // unique case (state_q) 95 96 // If local escalation is seen, transition directly to 97 // error state. 98 1/1 if (local_escalate_i) begin Tests: T1 T2 T3  99 1/1 state_d = Error; Tests: T6 T16 T31  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T6 T16 T31  102 1/1 fifo_clr_o = 1'b0; Tests: T6 T16 T31  103 1/1 fifo_pop_o = 1'b0; Tests: T6 T16 T31  104 1/1 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin Tests: T1 T2 T3  105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 1/1 state_d = Disabled; Tests: T5 T9 T6  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T5 T9 T6  110 1/1 fifo_pop_o = 1'b0; Tests: T5 T9 T6  111 1/1 fifo_clr_o = 1'b0; Tests: T5 T9 T6  112 end MISSING_ELSE

Cond Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[3].u_edn_ack_sm_ep
TotalCoveredPercent
Conditions33100.00
Logical33100.00
Non-Logical00
Event00

 LINE       104
 EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
             ------1------    ----------------------------2---------------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT5,T9,T6

FSM Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[3].u_edn_ack_sm_ep
Summary for FSM :: state_q
TotalCoveredPercent
States 6 6 100.00 (Not included in score)
Transitions 14 13 92.86
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
states   Line No.   Covered   Tests   
AckPls 80 Covered T28,T19,T42
DataWait 75 Covered T28,T19,T42
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T6,T16,T31
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Covered T211
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T28,T19,T42
DataWait->AckPls 80 Covered T28,T19,T42
DataWait->Disabled 107 Covered T81,T82,T225
DataWait->Error 99 Covered T226,T138,T227
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T16,T17,T18
EndPointClear->Disabled 107 Covered T212,T119,T108
EndPointClear->Error 99 Covered T16,T17,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T28,T19,T42
Idle->Disabled 107 Covered T4,T5,T9
Idle->Error 99 Covered T6,T16,T31



Branch Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[3].u_edn_ack_sm_ep
Line No.TotalCoveredPercent
Branches 16 16 100.00
IF 52 2 2 100.00
CASE 60 11 11 100.00
IF 98 3 3 100.00


52 `PRIM_FLOP_SPARSE_FSM(u_state_regs, state_d, state_q, state_e, Disabled) -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T1,T2,T3
0 Covered T1,T2,T3


60 unique case (state_q) -1- 61 Disabled: begin 62 if (enable_i) begin -2- 63 state_d = EndPointClear; ==> 64 fifo_clr_o = 1'b1; 65 end MISSING_ELSE ==> 66 end 67 EndPointClear: begin 68 state_d = Idle; ==> 69 end 70 Idle: begin 71 if (req_i) begin -3- 72 if (fifo_not_empty_i) begin -4- 73 fifo_pop_o = 1'b1; ==> 74 end MISSING_ELSE ==> 75 state_d = DataWait; 76 end MISSING_ELSE ==> 77 end 78 DataWait: begin 79 if (fifo_not_empty_i) begin -5- 80 state_d = AckPls; ==> 81 end MISSING_ELSE ==> 82 end 83 AckPls: begin 84 ack_o = 1'b1; ==> 85 state_d = Idle; 86 end 87 Error: begin 88 ack_sm_err_o = 1'b1; ==> 89 end 90 default: begin 91 ack_sm_err_o = 1'b1; ==>

Branches:
-1--2--3--4--5-StatusTests
Disabled 1 - - - Covered T1,T2,T3
Disabled 0 - - - Covered T1,T2,T3
EndPointClear - - - - Covered T1,T2,T3
Idle - 1 1 - Covered T28,T19,T42
Idle - 1 0 - Covered T28,T19,T42
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T28,T19,T42
DataWait - - - 0 Covered T28,T42,T81
AckPls - - - - Covered T28,T19,T42
Error - - - - Covered T6,T16,T31
default - - - - Covered T16,T17,T18


98 if (local_escalate_i) begin -1- 99 state_d = Error; ==> 100 // Tie off outputs, except for ack_sm_err_o. 101 ack_o = 1'b0; 102 fifo_clr_o = 1'b0; 103 fifo_pop_o = 1'b0; 104 end else if (!enable_i && state_q inside {EndPointClear, Idle, DataWait, AckPls}) begin -2- 105 // Only disable if state is legal and not Disabled or Error. 106 // Even when disabled, illegal states must result in a transition to Error. 107 state_d = Disabled; ==> 108 // Tie off all outputs, except for ack_sm_err_o. 109 ack_o = 1'b0; 110 fifo_pop_o = 1'b0; 111 fifo_clr_o = 1'b0; 112 end MISSING_ELSE ==>

Branches:
-1--2-StatusTests
1 - Covered T6,T16,T31
0 1 Covered T5,T9,T6
0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_edn_core.gen_ep_blk[3].u_edn_ack_sm_ep
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 3 3 100.00 3 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 3 3 100.00 3 100.00




Assertion Details

Name   Attempts   Real Successes   Failures   Incomplete   
AckSmErrorStStable_A 198951858 137493 0 0
FpvSecCmErrorStEscalate_A 198951858 138401 0 0
u_state_regs_A 198951858 198785308 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 137493 0 0
T6 2497 1094 0 0
T7 0 1151 0 0
T10 3087 0 0 0
T16 50309 22024 0 0
T17 0 9725 0 0
T18 0 6599 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1108 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 588 0 0
T69 0 633 0 0
T70 0 656 0 0
T209 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 138401 0 0
T6 2497 1095 0 0
T7 0 1152 0 0
T10 3087 0 0 0
T16 50309 22284 0 0
T17 0 9855 0 0
T18 0 6729 0 0
T24 664 0 0 0
T25 1216 0 0 0
T26 979 0 0 0
T30 3585 0 0 0
T31 2126 1109 0 0
T56 11358 0 0 0
T67 1096 0 0 0
T68 0 589 0 0
T69 0 634 0 0
T70 0 657 0 0
T209 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 198951858 198785308 0 0
T1 1376 1292 0 0
T2 1212 1160 0 0
T3 2198 2114 0 0
T4 5896 5670 0 0
T5 696 551 0 0
T6 2497 2341 0 0
T9 1767 1704 0 0
T10 3087 2994 0 0
T24 664 588 0 0
T25 1216 1125 0 0