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[1].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[2].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



Module Instance : tb.dut.u_edn_core.gen_ep_blk[6].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: T5 T17 T15  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: T5 T17 T15  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T5 T17 T15  102 1/1 fifo_clr_o = 1'b0; Tests: T5 T17 T15  103 1/1 fifo_pop_o = 1'b0; Tests: T5 T17 T15  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: T4 T5 T23  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T4 T5 T23  110 1/1 fifo_pop_o = 1'b0; Tests: T4 T5 T23  111 1/1 fifo_clr_o = 1'b0; Tests: T4 T5 T23  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
11CoveredT4,T5,T23

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 T5,T17,T15
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Covered T46,T103,T50
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T1,T2,T3
DataWait->AckPls 80 Covered T1,T2,T3
DataWait->Disabled 107 Covered T38,T45,T74
DataWait->Error 99 Covered T17,T212,T8
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T15,T16,T18
EndPointClear->Disabled 107 Covered T61,T216,T125
EndPointClear->Error 99 Covered T15,T16,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T1,T2,T3
Idle->Disabled 107 Covered T4,T5,T23
Idle->Error 99 Covered T5,T17,T15



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 T5,T17,T15
default - - - - Covered T5,T15,T72


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 T5,T17,T15
0 1 Covered T4,T5,T23
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 76637631 1140713 0 0
FpvSecCmErrorStEscalate_A 76637631 1148875 0 0
u_state_regs_A 76593733 75303136 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 76637631 1140713 0 0
T5 9121 2421 0 0
T6 108626 0 0 0
T7 0 4284 0 0
T9 19334 0 0 0
T15 0 52598 0 0
T16 0 72968 0 0
T17 0 2926 0 0
T18 0 150430 0 0
T22 5250 0 0 0
T23 12194 0 0 0
T24 8547 0 0 0
T25 11431 0 0 0
T59 11459 0 0 0
T60 29372 0 0 0
T62 0 2289 0 0
T71 10374 0 0 0
T72 0 7720 0 0
T73 0 1406 0 0
T215 0 7770 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 76637631 1148875 0 0
T5 9121 2428 0 0
T6 108626 0 0 0
T7 0 4291 0 0
T9 19334 0 0 0
T15 0 53508 0 0
T16 0 73878 0 0
T17 0 2933 0 0
T18 0 152250 0 0
T22 5250 0 0 0
T23 12194 0 0 0
T24 8547 0 0 0
T25 11431 0 0 0
T59 11459 0 0 0
T60 29372 0 0 0
T62 0 2296 0 0
T71 10374 0 0 0
T72 0 7727 0 0
T73 0 1413 0 0
T215 0 7777 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 76593733 75303136 0 0
T1 7784 7371 0 0
T2 7007 6468 0 0
T3 9800 9303 0 0
T4 14041 12928 0 0
T5 8897 7980 0 0
T6 108626 105140 0 0
T9 19334 18746 0 0
T22 5250 4767 0 0
T23 12194 11816 0 0
T24 8547 7924 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: T5 T17 T15  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: T5 T17 T15  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T5 T17 T15  102 1/1 fifo_clr_o = 1'b0; Tests: T5 T17 T15  103 1/1 fifo_pop_o = 1'b0; Tests: T5 T17 T15  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: T4 T5 T23  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T4 T5 T23  110 1/1 fifo_pop_o = 1'b0; Tests: T4 T5 T23  111 1/1 fifo_clr_o = 1'b0; Tests: T4 T5 T23  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
11CoveredT4,T5,T23

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 T5,T17,T15
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 T188,T36,T217
DataWait->Error 99 Covered T17,T218,T219
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T15,T16,T18
EndPointClear->Disabled 107 Covered T61,T216,T125
EndPointClear->Error 99 Covered T15,T16,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T1,T2,T3
Idle->Disabled 107 Covered T4,T5,T23
Idle->Error 99 Covered T15,T16,T7



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 T5,T17,T15
default - - - - Covered T5,T15,T72


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 T5,T17,T15
0 1 Covered T4,T5,T23
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 10948233 161159 0 0
FpvSecCmErrorStEscalate_A 10948233 162325 0 0
u_state_regs_A 10904335 10719964 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 161159 0 0
T5 1303 303 0 0
T6 15518 0 0 0
T7 0 612 0 0
T9 2762 0 0 0
T15 0 7514 0 0
T16 0 10424 0 0
T17 0 418 0 0
T18 0 21490 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 327 0 0
T71 1482 0 0 0
T72 0 1060 0 0
T73 0 158 0 0
T215 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 162325 0 0
T5 1303 304 0 0
T6 15518 0 0 0
T7 0 613 0 0
T9 2762 0 0 0
T15 0 7644 0 0
T16 0 10554 0 0
T17 0 419 0 0
T18 0 21750 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 328 0 0
T71 1482 0 0 0
T72 0 1061 0 0
T73 0 159 0 0
T215 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10904335 10719964 0 0
T1 1112 1053 0 0
T2 1001 924 0 0
T3 1400 1329 0 0
T4 1975 1816 0 0
T5 1079 948 0 0
T6 15518 15020 0 0
T9 2762 2678 0 0
T22 750 681 0 0
T23 1742 1688 0 0
T24 1221 1132 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: T5 T14 T39  73 1/1 fifo_pop_o = 1'b1; Tests: T14 T39 T40  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T5 T14 T39  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T14 T39 T40  80 1/1 state_d = AckPls; Tests: T14 T39 T40  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T14 T39 T40  85 1/1 state_d = Idle; Tests: T14 T39 T40  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T5 T17 T15  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: T5 T17 T15  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T5 T17 T15  102 1/1 fifo_clr_o = 1'b0; Tests: T5 T17 T15  103 1/1 fifo_pop_o = 1'b0; Tests: T5 T17 T15  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: T4 T5 T23  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T4 T5 T23  110 1/1 fifo_pop_o = 1'b0; Tests: T4 T5 T23  111 1/1 fifo_clr_o = 1'b0; Tests: T4 T5 T23  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
11CoveredT4,T5,T23

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 12 85.71
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
states   Line No.   Covered   Tests   
AckPls 80 Covered T14,T39,T40
DataWait 75 Covered T14,T39,T40
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T5,T17,T15
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 T14,T39,T40
DataWait->AckPls 80 Covered T14,T39,T40
DataWait->Disabled 107 Covered T74
DataWait->Error 99 Covered T8,T174,T213
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T15,T16,T18
EndPointClear->Disabled 107 Covered T61,T216,T125
EndPointClear->Error 99 Covered T15,T16,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T14,T39,T40
Idle->Disabled 107 Covered T4,T5,T23
Idle->Error 99 Covered T5,T17,T15



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 T14,T39,T40
Idle - 1 0 - Covered T5,T14,T39
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T14,T39,T40
DataWait - - - 0 Covered T14,T39,T8
AckPls - - - - Covered T14,T39,T40
Error - - - - Covered T5,T17,T15
default - - - - Covered T15,T16,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 T5,T17,T15
0 1 Covered T4,T5,T23
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 10948233 163259 0 0
FpvSecCmErrorStEscalate_A 10948233 164425 0 0
u_state_regs_A 10948233 10763862 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 163259 0 0
T5 1303 353 0 0
T6 15518 0 0 0
T7 0 612 0 0
T9 2762 0 0 0
T15 0 7514 0 0
T16 0 10424 0 0
T17 0 418 0 0
T18 0 21490 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 327 0 0
T71 1482 0 0 0
T72 0 1110 0 0
T73 0 208 0 0
T215 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 164425 0 0
T5 1303 354 0 0
T6 15518 0 0 0
T7 0 613 0 0
T9 2762 0 0 0
T15 0 7644 0 0
T16 0 10554 0 0
T17 0 419 0 0
T18 0 21750 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 328 0 0
T71 1482 0 0 0
T72 0 1111 0 0
T73 0 209 0 0
T215 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 10763862 0 0
T1 1112 1053 0 0
T2 1001 924 0 0
T3 1400 1329 0 0
T4 2011 1852 0 0
T5 1303 1172 0 0
T6 15518 15020 0 0
T9 2762 2678 0 0
T22 750 681 0 0
T23 1742 1688 0 0
T24 1221 1132 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: T19 T39 T51  73 1/1 fifo_pop_o = 1'b1; Tests: T19 T39 T51  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T19 T39 T51  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T19 T39 T51  80 1/1 state_d = AckPls; Tests: T19 T39 T51  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T19 T39 T51  85 1/1 state_d = Idle; Tests: T19 T39 T51  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T5 T17 T15  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: T5 T17 T15  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T5 T17 T15  102 1/1 fifo_clr_o = 1'b0; Tests: T5 T17 T15  103 1/1 fifo_pop_o = 1'b0; Tests: T5 T17 T15  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: T4 T5 T23  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T4 T5 T23  110 1/1 fifo_pop_o = 1'b0; Tests: T4 T5 T23  111 1/1 fifo_clr_o = 1'b0; Tests: T4 T5 T23  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
11CoveredT4,T5,T23

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 T19,T39,T51
DataWait 75 Covered T19,T39,T51
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T5,T17,T15
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 T19,T39,T51
DataWait->AckPls 80 Covered T19,T39,T51
DataWait->Disabled 107 Covered T166,T94,T220
DataWait->Error 99 Covered T221,T222
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T15,T16,T18
EndPointClear->Disabled 107 Covered T61,T216,T125
EndPointClear->Error 99 Covered T15,T16,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T19,T39,T51
Idle->Disabled 107 Covered T4,T5,T23
Idle->Error 99 Covered T5,T17,T15



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 T19,T39,T51
Idle - 1 0 - Covered T19,T39,T51
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T19,T39,T51
DataWait - - - 0 Covered T19,T39,T51
AckPls - - - - Covered T19,T39,T51
Error - - - - Covered T5,T17,T15
default - - - - Covered T15,T16,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 T5,T17,T15
0 1 Covered T4,T5,T23
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 10948233 163259 0 0
FpvSecCmErrorStEscalate_A 10948233 164425 0 0
u_state_regs_A 10948233 10763862 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 163259 0 0
T5 1303 353 0 0
T6 15518 0 0 0
T7 0 612 0 0
T9 2762 0 0 0
T15 0 7514 0 0
T16 0 10424 0 0
T17 0 418 0 0
T18 0 21490 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 327 0 0
T71 1482 0 0 0
T72 0 1110 0 0
T73 0 208 0 0
T215 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 164425 0 0
T5 1303 354 0 0
T6 15518 0 0 0
T7 0 613 0 0
T9 2762 0 0 0
T15 0 7644 0 0
T16 0 10554 0 0
T17 0 419 0 0
T18 0 21750 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 328 0 0
T71 1482 0 0 0
T72 0 1111 0 0
T73 0 209 0 0
T215 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 10763862 0 0
T1 1112 1053 0 0
T2 1001 924 0 0
T3 1400 1329 0 0
T4 2011 1852 0 0
T5 1303 1172 0 0
T6 15518 15020 0 0
T9 2762 2678 0 0
T22 750 681 0 0
T23 1742 1688 0 0
T24 1221 1132 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: T24 T43 T52  73 1/1 fifo_pop_o = 1'b1; Tests: T24 T43 T52  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T24 T43 T52  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T24 T43 T52  80 1/1 state_d = AckPls; Tests: T24 T43 T52  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T24 T43 T52  85 1/1 state_d = Idle; Tests: T24 T43 T52  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T5 T17 T15  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: T5 T17 T15  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T5 T17 T15  102 1/1 fifo_clr_o = 1'b0; Tests: T5 T17 T15  103 1/1 fifo_pop_o = 1'b0; Tests: T5 T17 T15  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: T4 T5 T23  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T4 T5 T23  110 1/1 fifo_pop_o = 1'b0; Tests: T4 T5 T23  111 1/1 fifo_clr_o = 1'b0; Tests: T4 T5 T23  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
11CoveredT4,T5,T23

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 T24,T43,T52
DataWait 75 Covered T24,T43,T52
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T5,T17,T15
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 T24,T43,T52
DataWait->AckPls 80 Covered T24,T43,T52
DataWait->Disabled 107 Covered T223
DataWait->Error 99 Covered T162,T206,T208
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T15,T16,T18
EndPointClear->Disabled 107 Covered T61,T216,T125
EndPointClear->Error 99 Covered T15,T16,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T24,T43,T52
Idle->Disabled 107 Covered T4,T5,T23
Idle->Error 99 Covered T5,T17,T15



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 T24,T43,T52
Idle - 1 0 - Covered T24,T43,T52
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T24,T43,T52
DataWait - - - 0 Covered T24,T43,T52
AckPls - - - - Covered T24,T43,T52
Error - - - - Covered T5,T17,T15
default - - - - Covered T15,T16,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 T5,T17,T15
0 1 Covered T4,T5,T23
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 10948233 163259 0 0
FpvSecCmErrorStEscalate_A 10948233 164425 0 0
u_state_regs_A 10948233 10763862 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 163259 0 0
T5 1303 353 0 0
T6 15518 0 0 0
T7 0 612 0 0
T9 2762 0 0 0
T15 0 7514 0 0
T16 0 10424 0 0
T17 0 418 0 0
T18 0 21490 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 327 0 0
T71 1482 0 0 0
T72 0 1110 0 0
T73 0 208 0 0
T215 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 164425 0 0
T5 1303 354 0 0
T6 15518 0 0 0
T7 0 613 0 0
T9 2762 0 0 0
T15 0 7644 0 0
T16 0 10554 0 0
T17 0 419 0 0
T18 0 21750 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 328 0 0
T71 1482 0 0 0
T72 0 1111 0 0
T73 0 209 0 0
T215 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 10763862 0 0
T1 1112 1053 0 0
T2 1001 924 0 0
T3 1400 1329 0 0
T4 2011 1852 0 0
T5 1303 1172 0 0
T6 15518 15020 0 0
T9 2762 2678 0 0
T22 750 681 0 0
T23 1742 1688 0 0
T24 1221 1132 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: T26 T38 T46  73 1/1 fifo_pop_o = 1'b1; Tests: T26 T38 T46  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T26 T38 T46  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T26 T38 T46  80 1/1 state_d = AckPls; Tests: T26 T38 T46  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T26 T38 T46  85 1/1 state_d = Idle; Tests: T26 T38 T46  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T5 T17 T15  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: T5 T17 T15  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T5 T17 T15  102 1/1 fifo_clr_o = 1'b0; Tests: T5 T17 T15  103 1/1 fifo_pop_o = 1'b0; Tests: T5 T17 T15  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: T4 T5 T23  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T4 T5 T23  110 1/1 fifo_pop_o = 1'b0; Tests: T4 T5 T23  111 1/1 fifo_clr_o = 1'b0; Tests: T4 T5 T23  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
11CoveredT4,T5,T23

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 13 92.86
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
states   Line No.   Covered   Tests   
AckPls 80 Covered T26,T38,T46
DataWait 75 Covered T26,T38,T46
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T5,T17,T15
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Covered T46,T224
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T26,T38,T46
DataWait->AckPls 80 Covered T26,T38,T46
DataWait->Disabled 107 Covered T38,T45,T83
DataWait->Error 99 Covered T212,T225,T226
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T15,T16,T18
EndPointClear->Disabled 107 Covered T61,T216,T125
EndPointClear->Error 99 Covered T15,T16,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T26,T38,T46
Idle->Disabled 107 Covered T4,T5,T23
Idle->Error 99 Covered T5,T17,T15



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 T26,T38,T46
Idle - 1 0 - Covered T26,T38,T46
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T26,T38,T46
DataWait - - - 0 Covered T26,T38,T46
AckPls - - - - Covered T26,T38,T46
Error - - - - Covered T5,T17,T15
default - - - - Covered T15,T16,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 T5,T17,T15
0 1 Covered T4,T5,T23
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 10948233 163259 0 0
FpvSecCmErrorStEscalate_A 10948233 164425 0 0
u_state_regs_A 10948233 10763862 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 163259 0 0
T5 1303 353 0 0
T6 15518 0 0 0
T7 0 612 0 0
T9 2762 0 0 0
T15 0 7514 0 0
T16 0 10424 0 0
T17 0 418 0 0
T18 0 21490 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 327 0 0
T71 1482 0 0 0
T72 0 1110 0 0
T73 0 208 0 0
T215 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 164425 0 0
T5 1303 354 0 0
T6 15518 0 0 0
T7 0 613 0 0
T9 2762 0 0 0
T15 0 7644 0 0
T16 0 10554 0 0
T17 0 419 0 0
T18 0 21750 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 328 0 0
T71 1482 0 0 0
T72 0 1111 0 0
T73 0 209 0 0
T215 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 10763862 0 0
T1 1112 1053 0 0
T2 1001 924 0 0
T3 1400 1329 0 0
T4 2011 1852 0 0
T5 1303 1172 0 0
T6 15518 15020 0 0
T9 2762 2678 0 0
T22 750 681 0 0
T23 1742 1688 0 0
T24 1221 1132 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: T9 T7 T44  73 1/1 fifo_pop_o = 1'b1; Tests: T9 T44 T49  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T9 T7 T44  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T9 T7 T44  80 1/1 state_d = AckPls; Tests: T9 T44 T49  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T9 T44 T49  85 1/1 state_d = Idle; Tests: T9 T44 T49  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T5 T17 T15  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: T5 T17 T15  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T5 T17 T15  102 1/1 fifo_clr_o = 1'b0; Tests: T5 T17 T15  103 1/1 fifo_pop_o = 1'b0; Tests: T5 T17 T15  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: T4 T5 T23  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T4 T5 T23  110 1/1 fifo_pop_o = 1'b0; Tests: T4 T5 T23  111 1/1 fifo_clr_o = 1'b0; Tests: T4 T5 T23  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
11CoveredT4,T5,T23

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 T9,T44,T49
DataWait 75 Covered T9,T7,T44
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T5,T17,T15
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Covered T50
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T9,T44,T49
DataWait->AckPls 80 Covered T9,T44,T49
DataWait->Disabled 107 Covered T86,T227,T228
DataWait->Error 99 Covered T7,T114,T153
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T15,T16,T18
EndPointClear->Disabled 107 Covered T61,T216,T125
EndPointClear->Error 99 Covered T15,T16,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T9,T7,T44
Idle->Disabled 107 Covered T4,T5,T23
Idle->Error 99 Covered T5,T17,T15



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 T9,T44,T49
Idle - 1 0 - Covered T9,T7,T44
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T9,T44,T49
DataWait - - - 0 Covered T7,T44,T114
AckPls - - - - Covered T9,T44,T49
Error - - - - Covered T5,T17,T15
default - - - - Covered T15,T16,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 T5,T17,T15
0 1 Covered T4,T5,T23
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 10948233 163259 0 0
FpvSecCmErrorStEscalate_A 10948233 164425 0 0
u_state_regs_A 10948233 10763862 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 163259 0 0
T5 1303 353 0 0
T6 15518 0 0 0
T7 0 612 0 0
T9 2762 0 0 0
T15 0 7514 0 0
T16 0 10424 0 0
T17 0 418 0 0
T18 0 21490 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 327 0 0
T71 1482 0 0 0
T72 0 1110 0 0
T73 0 208 0 0
T215 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 164425 0 0
T5 1303 354 0 0
T6 15518 0 0 0
T7 0 613 0 0
T9 2762 0 0 0
T15 0 7644 0 0
T16 0 10554 0 0
T17 0 419 0 0
T18 0 21750 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 328 0 0
T71 1482 0 0 0
T72 0 1111 0 0
T73 0 209 0 0
T215 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 10763862 0 0
T1 1112 1053 0 0
T2 1001 924 0 0
T3 1400 1329 0 0
T4 2011 1852 0 0
T5 1303 1172 0 0
T6 15518 15020 0 0
T9 2762 2678 0 0
T22 750 681 0 0
T23 1742 1688 0 0
T24 1221 1132 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: T26 T27 T54  73 1/1 fifo_pop_o = 1'b1; Tests: T26 T27 T54  74 end MISSING_ELSE 75 1/1 state_d = DataWait; Tests: T26 T27 T54  76 end MISSING_ELSE 77 end 78 DataWait: begin 79 1/1 if (fifo_not_empty_i) begin Tests: T26 T27 T54  80 1/1 state_d = AckPls; Tests: T26 T27 T54  81 end MISSING_ELSE 82 end 83 AckPls: begin 84 1/1 ack_o = 1'b1; Tests: T26 T27 T54  85 1/1 state_d = Idle; Tests: T26 T27 T54  86 end 87 Error: begin 88 1/1 ack_sm_err_o = 1'b1; Tests: T5 T17 T15  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: T5 T17 T15  100 // Tie off outputs, except for ack_sm_err_o. 101 1/1 ack_o = 1'b0; Tests: T5 T17 T15  102 1/1 fifo_clr_o = 1'b0; Tests: T5 T17 T15  103 1/1 fifo_pop_o = 1'b0; Tests: T5 T17 T15  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: T4 T5 T23  108 // Tie off all outputs, except for ack_sm_err_o. 109 1/1 ack_o = 1'b0; Tests: T4 T5 T23  110 1/1 fifo_pop_o = 1'b0; Tests: T4 T5 T23  111 1/1 fifo_clr_o = 1'b0; Tests: T4 T5 T23  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
11CoveredT4,T5,T23

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 13 92.86
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
states   Line No.   Covered   Tests   
AckPls 80 Covered T26,T27,T54
DataWait 75 Covered T26,T27,T54
Disabled 107 Covered T1,T2,T3
EndPointClear 63 Covered T1,T2,T3
Error 99 Covered T5,T17,T15
Idle 68 Covered T1,T2,T3


transitions   Line No.   Covered   Tests   
AckPls->Disabled 107 Covered T103,T229
AckPls->Error 99 Not Covered
AckPls->Idle 85 Covered T26,T27,T54
DataWait->AckPls 80 Covered T26,T27,T54
DataWait->Disabled 107 Covered T167,T107,T189
DataWait->Error 99 Covered T141,T207,T230
Disabled->EndPointClear 63 Covered T1,T2,T3
Disabled->Error 99 Covered T15,T16,T18
EndPointClear->Disabled 107 Covered T61,T216,T125
EndPointClear->Error 99 Covered T15,T16,T18
EndPointClear->Idle 68 Covered T1,T2,T3
Idle->DataWait 75 Covered T26,T27,T54
Idle->Disabled 107 Covered T4,T5,T23
Idle->Error 99 Covered T5,T17,T15



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 T26,T27,T54
Idle - 1 0 - Covered T26,T27,T54
Idle - 0 - - Covered T1,T2,T3
DataWait - - - 1 Covered T26,T27,T54
DataWait - - - 0 Covered T26,T27,T54
AckPls - - - - Covered T26,T27,T54
Error - - - - Covered T5,T17,T15
default - - - - Covered T15,T16,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 T5,T17,T15
0 1 Covered T4,T5,T23
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 10948233 163259 0 0
FpvSecCmErrorStEscalate_A 10948233 164425 0 0
u_state_regs_A 10948233 10763862 0 0


AckSmErrorStStable_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 163259 0 0
T5 1303 353 0 0
T6 15518 0 0 0
T7 0 612 0 0
T9 2762 0 0 0
T15 0 7514 0 0
T16 0 10424 0 0
T17 0 418 0 0
T18 0 21490 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 327 0 0
T71 1482 0 0 0
T72 0 1110 0 0
T73 0 208 0 0
T215 0 1110 0 0

FpvSecCmErrorStEscalate_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 164425 0 0
T5 1303 354 0 0
T6 15518 0 0 0
T7 0 613 0 0
T9 2762 0 0 0
T15 0 7644 0 0
T16 0 10554 0 0
T17 0 419 0 0
T18 0 21750 0 0
T22 750 0 0 0
T23 1742 0 0 0
T24 1221 0 0 0
T25 1633 0 0 0
T59 1637 0 0 0
T60 4196 0 0 0
T62 0 328 0 0
T71 1482 0 0 0
T72 0 1111 0 0
T73 0 209 0 0
T215 0 1111 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10948233 10763862 0 0
T1 1112 1053 0 0
T2 1001 924 0 0
T3 1400 1329 0 0
T4 2011 1852 0 0
T5 1303 1172 0 0
T6 15518 15020 0 0
T9 2762 2678 0 0
T22 750 681 0 0
T23 1742 1688 0 0
T24 1221 1132 0 0