Line Coverage for Module :
edn_ack_sm
| Line No. | Total | Covered | Percent |
TOTAL | | 32 | 32 | 100.00 |
ALWAYS | 52 | 3 | 3 | 100.00 |
ALWAYS | 55 | 29 | 29 | 100.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
| Total | Covered | Percent |
Conditions | 3 | 3 | 100.00 |
Logical | 3 | 3 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 104
EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
------1------ ----------------------------2---------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T4,T5,T23 |
FSM Coverage for Module :
edn_ack_sm
Summary for FSM :: state_q
| Total | Covered | Percent | |
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. | Total | Covered | Percent |
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- | Status | Tests |
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- | Status | Tests |
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- | Status | Tests |
1 |
- |
Covered |
T5,T17,T15 |
0 |
1 |
Covered |
T4,T5,T23 |
0 |
0 |
Covered |
T1,T2,T3 |
Assert Coverage for Module :
edn_ack_sm
Assertion Details
AckSmErrorStStable_A
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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. | Total | Covered | Percent |
TOTAL | | 32 | 32 | 100.00 |
ALWAYS | 52 | 3 | 3 | 100.00 |
ALWAYS | 55 | 29 | 29 | 100.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
| Total | Covered | Percent |
Conditions | 3 | 3 | 100.00 |
Logical | 3 | 3 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 104
EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
------1------ ----------------------------2---------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T4,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
| Total | Covered | Percent | |
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. | Total | Covered | Percent |
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- | Status | Tests |
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- | Status | Tests |
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- | Status | Tests |
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
Assertion Details
AckSmErrorStStable_A
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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. | Total | Covered | Percent |
TOTAL | | 32 | 32 | 100.00 |
ALWAYS | 52 | 3 | 3 | 100.00 |
ALWAYS | 55 | 29 | 29 | 100.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
| Total | Covered | Percent |
Conditions | 3 | 3 | 100.00 |
Logical | 3 | 3 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 104
EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
------1------ ----------------------------2---------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T4,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
| Total | Covered | Percent | |
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. | Total | Covered | Percent |
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- | Status | Tests |
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- | Status | Tests |
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- | Status | Tests |
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
Assertion Details
AckSmErrorStStable_A
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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. | Total | Covered | Percent |
TOTAL | | 32 | 32 | 100.00 |
ALWAYS | 52 | 3 | 3 | 100.00 |
ALWAYS | 55 | 29 | 29 | 100.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
| Total | Covered | Percent |
Conditions | 3 | 3 | 100.00 |
Logical | 3 | 3 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 104
EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
------1------ ----------------------------2---------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T4,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
| Total | Covered | Percent | |
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. | Total | Covered | Percent |
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- | Status | Tests |
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- | Status | Tests |
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- | Status | Tests |
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
Assertion Details
AckSmErrorStStable_A
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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. | Total | Covered | Percent |
TOTAL | | 32 | 32 | 100.00 |
ALWAYS | 52 | 3 | 3 | 100.00 |
ALWAYS | 55 | 29 | 29 | 100.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
| Total | Covered | Percent |
Conditions | 3 | 3 | 100.00 |
Logical | 3 | 3 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 104
EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
------1------ ----------------------------2---------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T4,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
| Total | Covered | Percent | |
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. | Total | Covered | Percent |
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- | Status | Tests |
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- | Status | Tests |
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- | Status | Tests |
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
Assertion Details
AckSmErrorStStable_A
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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. | Total | Covered | Percent |
TOTAL | | 32 | 32 | 100.00 |
ALWAYS | 52 | 3 | 3 | 100.00 |
ALWAYS | 55 | 29 | 29 | 100.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
| Total | Covered | Percent |
Conditions | 3 | 3 | 100.00 |
Logical | 3 | 3 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 104
EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
------1------ ----------------------------2---------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T4,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
| Total | Covered | Percent | |
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. | Total | Covered | Percent |
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- | Status | Tests |
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- | Status | Tests |
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- | Status | Tests |
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
Assertion Details
AckSmErrorStStable_A
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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. | Total | Covered | Percent |
TOTAL | | 32 | 32 | 100.00 |
ALWAYS | 52 | 3 | 3 | 100.00 |
ALWAYS | 55 | 29 | 29 | 100.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
| Total | Covered | Percent |
Conditions | 3 | 3 | 100.00 |
Logical | 3 | 3 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 104
EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
------1------ ----------------------------2---------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T4,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
| Total | Covered | Percent | |
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. | Total | Covered | Percent |
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- | Status | Tests |
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- | Status | Tests |
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- | Status | Tests |
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
Assertion Details
AckSmErrorStStable_A
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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. | Total | Covered | Percent |
TOTAL | | 32 | 32 | 100.00 |
ALWAYS | 52 | 3 | 3 | 100.00 |
ALWAYS | 55 | 29 | 29 | 100.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
| Total | Covered | Percent |
Conditions | 3 | 3 | 100.00 |
Logical | 3 | 3 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 104
EXPRESSION (((!enable_i)) && (state_q inside {EndPointClear, Idle, DataWait, AckPls}))
------1------ ----------------------------2---------------------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T4,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
| Total | Covered | Percent | |
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. | Total | Covered | Percent |
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- | Status | Tests |
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- | Status | Tests |
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- | Status | Tests |
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
Assertion Details
AckSmErrorStStable_A
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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
Name | Attempts | Real Successes | Failures | Incomplete |
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 |