Line Coverage for Module :
gpio
| Line No. | Total | Covered | Percent |
TOTAL | | 32 | 32 | 100.00 |
CONT_ASSIGN | 63 | 1 | 1 | 100.00 |
CONT_ASSIGN | 66 | 1 | 1 | 100.00 |
CONT_ASSIGN | 67 | 1 | 1 | 100.00 |
CONT_ASSIGN | 69 | 1 | 1 | 100.00 |
CONT_ASSIGN | 70 | 1 | 1 | 100.00 |
CONT_ASSIGN | 72 | 1 | 1 | 100.00 |
ALWAYS | 76 | 8 | 8 | 100.00 |
CONT_ASSIGN | 92 | 1 | 1 | 100.00 |
CONT_ASSIGN | 93 | 1 | 1 | 100.00 |
CONT_ASSIGN | 95 | 1 | 1 | 100.00 |
ALWAYS | 99 | 8 | 8 | 100.00 |
ALWAYS | 116 | 1 | 1 | 100.00 |
CONT_ASSIGN | 137 | 1 | 1 | 100.00 |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 1 | 1 | 100.00 |
CONT_ASSIGN | 140 | 1 | 1 | 100.00 |
CONT_ASSIGN | 142 | 1 | 1 | 100.00 |
CONT_ASSIGN | 149 | 1 | 1 | 100.00 |
62 assign hw2reg.data_in.de = 1'b1;
63 1/1 assign hw2reg.data_in.d = data_in_d;
Tests: T33 T34 T35
64
65 // GPIO_OUT
66 1/1 assign cio_gpio_o = cio_gpio_q;
Tests: T33 T34 T35
67 1/1 assign cio_gpio_en_o = cio_gpio_en_q;
Tests: T33 T34 T35
68
69 1/1 assign hw2reg.direct_out.d = cio_gpio_q;
Tests: T33 T34 T35
70 1/1 assign hw2reg.masked_out_upper.data.d = cio_gpio_q[31:16];
Tests: T33 T34 T35
71 assign hw2reg.masked_out_upper.mask.d = 16'h 0;
72 1/1 assign hw2reg.masked_out_lower.data.d = cio_gpio_q[15:0];
Tests: T33 T34 T35
73 assign hw2reg.masked_out_lower.mask.d = 16'h 0;
74
75 always_ff @(posedge clk_i or negedge rst_ni) begin
76 1/1 if (!rst_ni) begin
Tests: T33 T34 T35
77 1/1 cio_gpio_q <= '0;
Tests: T33 T34 T35
78 1/1 end else if (reg2hw.direct_out.qe) begin
Tests: T33 T34 T35
79 1/1 cio_gpio_q <= reg2hw.direct_out.q;
Tests: T33 T34 T35
80 1/1 end else if (reg2hw.masked_out_upper.data.qe) begin
Tests: T33 T34 T35
81 1/1 cio_gpio_q[31:16] <=
Tests: T33 T34 T37
82 ( reg2hw.masked_out_upper.mask.q & reg2hw.masked_out_upper.data.q) |
83 (~reg2hw.masked_out_upper.mask.q & cio_gpio_q[31:16]);
84 1/1 end else if (reg2hw.masked_out_lower.data.qe) begin
Tests: T33 T34 T35
85 1/1 cio_gpio_q[15:0] <=
Tests: T33 T34 T37
86 ( reg2hw.masked_out_lower.mask.q & reg2hw.masked_out_lower.data.q) |
87 (~reg2hw.masked_out_lower.mask.q & cio_gpio_q[15:0]);
88 end
MISSING_ELSE
89 end
90
91 // GPIO OE
92 1/1 assign hw2reg.direct_oe.d = cio_gpio_en_q;
Tests: T33 T34 T35
93 1/1 assign hw2reg.masked_oe_upper.data.d = cio_gpio_en_q[31:16];
Tests: T33 T34 T35
94 assign hw2reg.masked_oe_upper.mask.d = 16'h 0;
95 1/1 assign hw2reg.masked_oe_lower.data.d = cio_gpio_en_q[15:0];
Tests: T33 T34 T35
96 assign hw2reg.masked_oe_lower.mask.d = 16'h 0;
97
98 always_ff @(posedge clk_i or negedge rst_ni) begin
99 1/1 if (!rst_ni) begin
Tests: T33 T34 T35
100 1/1 cio_gpio_en_q <= '0;
Tests: T33 T34 T35
101 1/1 end else if (reg2hw.direct_oe.qe) begin
Tests: T33 T34 T35
102 1/1 cio_gpio_en_q <= reg2hw.direct_oe.q;
Tests: T33 T34 T35
103 1/1 end else if (reg2hw.masked_oe_upper.data.qe) begin
Tests: T33 T34 T35
104 1/1 cio_gpio_en_q[31:16] <=
Tests: T33 T34 T37
105 ( reg2hw.masked_oe_upper.mask.q & reg2hw.masked_oe_upper.data.q) |
106 (~reg2hw.masked_oe_upper.mask.q & cio_gpio_en_q[31:16]);
107 1/1 end else if (reg2hw.masked_oe_lower.data.qe) begin
Tests: T33 T34 T35
108 1/1 cio_gpio_en_q[15:0] <=
Tests: T33 T34 T37
109 ( reg2hw.masked_oe_lower.mask.q & reg2hw.masked_oe_lower.data.q) |
110 (~reg2hw.masked_oe_lower.mask.q & cio_gpio_en_q[15:0]);
111 end
MISSING_ELSE
112 end
113
114 logic [31:0] data_in_q;
115 always_ff @(posedge clk_i) begin
116 1/1 data_in_q <= data_in_d;
Tests: T33 T34 T35
117 end
118
119 logic [31:0] event_intr_rise, event_intr_fall, event_intr_actlow, event_intr_acthigh;
120 logic [31:0] event_intr_combined;
121
122 // instantiate interrupt hardware primitive
123 prim_intr_hw #(.Width(32)) intr_hw (
124 .clk_i,
125 .rst_ni,
126 .event_intr_i (event_intr_combined),
127 .reg2hw_intr_enable_q_i (reg2hw.intr_enable.q),
128 .reg2hw_intr_test_q_i (reg2hw.intr_test.q),
129 .reg2hw_intr_test_qe_i (reg2hw.intr_test.qe),
130 .reg2hw_intr_state_q_i (reg2hw.intr_state.q),
131 .hw2reg_intr_state_de_o (hw2reg.intr_state.de),
132 .hw2reg_intr_state_d_o (hw2reg.intr_state.d),
133 .intr_o (intr_gpio_o)
134 );
135
136 // detect four possible individual interrupts
137 1/1 assign event_intr_rise = (~data_in_q & data_in_d) & reg2hw.intr_ctrl_en_rising.q;
Tests: T33 T34 T35
138 1/1 assign event_intr_fall = ( data_in_q & ~data_in_d) & reg2hw.intr_ctrl_en_falling.q;
Tests: T33 T34 T35
139 1/1 assign event_intr_acthigh = data_in_d & reg2hw.intr_ctrl_en_lvlhigh.q;
Tests: T33 T34 T35
140 1/1 assign event_intr_actlow = ~data_in_d & reg2hw.intr_ctrl_en_lvllow.q;
Tests: T33 T34 T35
141
142 1/1 assign event_intr_combined = event_intr_rise |
Tests: T33 T34 T35
143 event_intr_fall |
144 event_intr_actlow |
145 event_intr_acthigh;
146
147 // Alerts
148 logic [NumAlerts-1:0] alert_test, alerts;
149 1/1 assign alert_test = {
Tests: T33 T34 T35
Cond Coverage for Module :
gpio
| Total | Covered | Percent |
Conditions | 3 | 3 | 100.00 |
Logical | 3 | 3 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 149
SUB-EXPRESSION (reg2hw.alert_test.q & reg2hw.alert_test.qe)
---------1--------- ----------2---------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T53,T54,T24 |
1 | 0 | Covered | T33,T34,T35 |
1 | 1 | Covered | T53,T54,T24 |
Toggle Coverage for Module :
gpio
| Total | Covered | Percent |
Totals |
30 |
30 |
100.00 |
Total Bits |
588 |
588 |
100.00 |
Total Bits 0->1 |
294 |
294 |
100.00 |
Total Bits 1->0 |
294 |
294 |
100.00 |
| | | |
Ports |
30 |
30 |
100.00 |
Port Bits |
588 |
588 |
100.00 |
Port Bits 0->1 |
294 |
294 |
100.00 |
Port Bits 1->0 |
294 |
294 |
100.00 |
Port Details
Name | Toggle | Toggle 1->0 | Tests | Toggle 0->1 | Tests | Direction |
clk_i |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
rst_ni |
Yes |
Yes |
T37,T40,T52 |
Yes |
T33,T34,T35 |
INPUT |
tl_i.d_ready |
Yes |
Yes |
T34,T36,T37 |
Yes |
T33,T34,T35 |
INPUT |
tl_i.a_user.data_intg[6:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
tl_i.a_user.cmd_intg[6:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
tl_i.a_user.instr_type[3:0] |
Yes |
Yes |
T35,T39,T41 |
Yes |
T35,T39,T41 |
INPUT |
tl_i.a_user.rsvd[4:0] |
Unreachable |
Unreachable |
|
Unreachable |
|
INPUT |
tl_i.a_data[31:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
tl_i.a_mask[3:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
tl_i.a_address[31:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
tl_i.a_source[7:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
tl_i.a_size[1:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
tl_i.a_param[2:0] |
Unreachable |
Unreachable |
|
Unreachable |
|
INPUT |
tl_i.a_opcode[2:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
tl_i.a_valid |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
tl_o.a_ready |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
OUTPUT |
tl_o.d_error |
Yes |
Yes |
T46,T47,T48 |
Yes |
T46,T47,T48 |
OUTPUT |
tl_o.d_user.data_intg[6:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
OUTPUT |
tl_o.d_user.rsp_intg[5:0] |
Yes |
Yes |
*T33,*T34,*T35 |
Yes |
T33,T34,T35 |
OUTPUT |
tl_o.d_user.rsp_intg[6] |
Unreachable |
Unreachable |
|
Unreachable |
|
OUTPUT |
tl_o.d_data[31:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
OUTPUT |
tl_o.d_sink |
Unreachable |
Unreachable |
|
Unreachable |
|
OUTPUT |
tl_o.d_source[7:0] |
Yes |
Yes |
T33,T34,T36 |
Yes |
T33,T34,T35 |
OUTPUT |
tl_o.d_size[1:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
OUTPUT |
tl_o.d_param[2:0] |
Unreachable |
Unreachable |
|
Unreachable |
|
OUTPUT |
tl_o.d_opcode[0] |
Yes |
Yes |
*T33,*T34,*T35 |
Yes |
T33,T34,T35 |
OUTPUT |
tl_o.d_opcode[2:1] |
Unreachable |
Unreachable |
|
Unreachable |
|
OUTPUT |
tl_o.d_valid |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
OUTPUT |
intr_gpio_o[31:0] |
Yes |
Yes |
T37,T39,T41 |
Yes |
T37,T39,T41 |
OUTPUT |
alert_rx_i[0].ack_n |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
alert_rx_i[0].ack_p |
Yes |
Yes |
T40,T53,T54 |
Yes |
T40,T53,T54 |
INPUT |
alert_rx_i[0].ping_n |
Unreachable |
Unreachable |
|
Unreachable |
|
INPUT |
alert_rx_i[0].ping_p |
Unreachable |
Unreachable |
|
Unreachable |
|
INPUT |
alert_tx_o[0].alert_n |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
OUTPUT |
alert_tx_o[0].alert_p |
Yes |
Yes |
T40,T53,T54 |
Yes |
T40,T53,T54 |
OUTPUT |
cio_gpio_i[31:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
INPUT |
cio_gpio_o[31:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
OUTPUT |
cio_gpio_en_o[31:0] |
Yes |
Yes |
T33,T34,T35 |
Yes |
T33,T34,T35 |
OUTPUT |
*Tests covering at least one bit in the range
Branch Coverage for Module :
gpio
| Line No. | Total | Covered | Percent |
Branches |
|
10 |
10 |
100.00 |
IF |
76 |
5 |
5 |
100.00 |
IF |
99 |
5 |
5 |
100.00 |
76 if (!rst_ni) begin
-1-
77 cio_gpio_q <= '0;
==>
78 end else if (reg2hw.direct_out.qe) begin
-2-
79 cio_gpio_q <= reg2hw.direct_out.q;
==>
80 end else if (reg2hw.masked_out_upper.data.qe) begin
-3-
81 cio_gpio_q[31:16] <=
==>
82 ( reg2hw.masked_out_upper.mask.q & reg2hw.masked_out_upper.data.q) |
83 (~reg2hw.masked_out_upper.mask.q & cio_gpio_q[31:16]);
84 end else if (reg2hw.masked_out_lower.data.qe) begin
-4-
85 cio_gpio_q[15:0] <=
==>
86 ( reg2hw.masked_out_lower.mask.q & reg2hw.masked_out_lower.data.q) |
87 (~reg2hw.masked_out_lower.mask.q & cio_gpio_q[15:0]);
88 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | -4- | Status | Tests |
1 |
- |
- |
- |
Covered |
T33,T34,T35 |
0 |
1 |
- |
- |
Covered |
T33,T34,T35 |
0 |
0 |
1 |
- |
Covered |
T33,T34,T37 |
0 |
0 |
0 |
1 |
Covered |
T33,T34,T37 |
0 |
0 |
0 |
0 |
Covered |
T33,T34,T35 |
99 if (!rst_ni) begin
-1-
100 cio_gpio_en_q <= '0;
==>
101 end else if (reg2hw.direct_oe.qe) begin
-2-
102 cio_gpio_en_q <= reg2hw.direct_oe.q;
==>
103 end else if (reg2hw.masked_oe_upper.data.qe) begin
-3-
104 cio_gpio_en_q[31:16] <=
==>
105 ( reg2hw.masked_oe_upper.mask.q & reg2hw.masked_oe_upper.data.q) |
106 (~reg2hw.masked_oe_upper.mask.q & cio_gpio_en_q[31:16]);
107 end else if (reg2hw.masked_oe_lower.data.qe) begin
-4-
108 cio_gpio_en_q[15:0] <=
==>
109 ( reg2hw.masked_oe_lower.mask.q & reg2hw.masked_oe_lower.data.q) |
110 (~reg2hw.masked_oe_lower.mask.q & cio_gpio_en_q[15:0]);
111 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | -4- | Status | Tests |
1 |
- |
- |
- |
Covered |
T33,T34,T35 |
0 |
1 |
- |
- |
Covered |
T33,T34,T35 |
0 |
0 |
1 |
- |
Covered |
T33,T34,T37 |
0 |
0 |
0 |
1 |
Covered |
T33,T34,T37 |
0 |
0 |
0 |
0 |
Covered |
T33,T34,T35 |
Assert Coverage for Module :
gpio
Assertion Details
AlertsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
50422296 |
50086682 |
0 |
0 |
T33 |
1123 |
1057 |
0 |
0 |
T34 |
4515 |
4420 |
0 |
0 |
T35 |
3561 |
3485 |
0 |
0 |
T36 |
4599 |
4522 |
0 |
0 |
T37 |
3280 |
2147 |
0 |
0 |
T38 |
5604 |
5545 |
0 |
0 |
T39 |
6896 |
6817 |
0 |
0 |
T40 |
8040 |
5632 |
0 |
0 |
T41 |
12483 |
12420 |
0 |
0 |
T42 |
7052 |
6992 |
0 |
0 |
CioGpioEnOKnown
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
50422296 |
50086682 |
0 |
0 |
T33 |
1123 |
1057 |
0 |
0 |
T34 |
4515 |
4420 |
0 |
0 |
T35 |
3561 |
3485 |
0 |
0 |
T36 |
4599 |
4522 |
0 |
0 |
T37 |
3280 |
2147 |
0 |
0 |
T38 |
5604 |
5545 |
0 |
0 |
T39 |
6896 |
6817 |
0 |
0 |
T40 |
8040 |
5632 |
0 |
0 |
T41 |
12483 |
12420 |
0 |
0 |
T42 |
7052 |
6992 |
0 |
0 |
CioGpioOKnown
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
50422296 |
50086682 |
0 |
0 |
T33 |
1123 |
1057 |
0 |
0 |
T34 |
4515 |
4420 |
0 |
0 |
T35 |
3561 |
3485 |
0 |
0 |
T36 |
4599 |
4522 |
0 |
0 |
T37 |
3280 |
2147 |
0 |
0 |
T38 |
5604 |
5545 |
0 |
0 |
T39 |
6896 |
6817 |
0 |
0 |
T40 |
8040 |
5632 |
0 |
0 |
T41 |
12483 |
12420 |
0 |
0 |
T42 |
7052 |
6992 |
0 |
0 |
FpvSecCmRegWeOnehotCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
50422296 |
110 |
0 |
0 |
T23 |
0 |
30 |
0 |
0 |
T40 |
8040 |
30 |
0 |
0 |
T41 |
12483 |
0 |
0 |
0 |
T42 |
7052 |
0 |
0 |
0 |
T52 |
0 |
10 |
0 |
0 |
T53 |
1004 |
0 |
0 |
0 |
T57 |
2371 |
0 |
0 |
0 |
T64 |
0 |
10 |
0 |
0 |
T65 |
0 |
30 |
0 |
0 |
T66 |
15219 |
0 |
0 |
0 |
T67 |
2384 |
0 |
0 |
0 |
T68 |
6371 |
0 |
0 |
0 |
T69 |
5828 |
0 |
0 |
0 |
T70 |
3019 |
0 |
0 |
0 |
IntrGpioKnown
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
50422296 |
50086682 |
0 |
0 |
T33 |
1123 |
1057 |
0 |
0 |
T34 |
4515 |
4420 |
0 |
0 |
T35 |
3561 |
3485 |
0 |
0 |
T36 |
4599 |
4522 |
0 |
0 |
T37 |
3280 |
2147 |
0 |
0 |
T38 |
5604 |
5545 |
0 |
0 |
T39 |
6896 |
6817 |
0 |
0 |
T40 |
8040 |
5632 |
0 |
0 |
T41 |
12483 |
12420 |
0 |
0 |
T42 |
7052 |
6992 |
0 |
0 |