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: T24 T25 T26
64
65 // GPIO_OUT
66 1/1 assign cio_gpio_o = cio_gpio_q;
Tests: T24 T25 T26
67 1/1 assign cio_gpio_en_o = cio_gpio_en_q;
Tests: T24 T25 T26
68
69 1/1 assign hw2reg.direct_out.d = cio_gpio_q;
Tests: T24 T25 T26
70 1/1 assign hw2reg.masked_out_upper.data.d = cio_gpio_q[31:16];
Tests: T24 T25 T26
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: T24 T25 T26
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: T24 T25 T26
77 1/1 cio_gpio_q <= '0;
Tests: T24 T25 T26
78 1/1 end else if (reg2hw.direct_out.qe) begin
Tests: T24 T25 T26
79 1/1 cio_gpio_q <= reg2hw.direct_out.q;
Tests: T24 T25 T26
80 1/1 end else if (reg2hw.masked_out_upper.data.qe) begin
Tests: T24 T25 T26
81 1/1 cio_gpio_q[31:16] <=
Tests: T25 T27 T28
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: T24 T25 T26
85 1/1 cio_gpio_q[15:0] <=
Tests: T25 T27 T28
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: T24 T25 T26
93 1/1 assign hw2reg.masked_oe_upper.data.d = cio_gpio_en_q[31:16];
Tests: T24 T25 T26
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: T24 T25 T26
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: T24 T25 T26
100 1/1 cio_gpio_en_q <= '0;
Tests: T24 T25 T26
101 1/1 end else if (reg2hw.direct_oe.qe) begin
Tests: T24 T25 T26
102 1/1 cio_gpio_en_q <= reg2hw.direct_oe.q;
Tests: T24 T25 T26
103 1/1 end else if (reg2hw.masked_oe_upper.data.qe) begin
Tests: T24 T25 T26
104 1/1 cio_gpio_en_q[31:16] <=
Tests: T25 T27 T28
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: T24 T25 T26
108 1/1 cio_gpio_en_q[15:0] <=
Tests: T25 T27 T28
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: T24 T25 T26
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: T24 T25 T26
138 1/1 assign event_intr_fall = ( data_in_q & ~data_in_d) & reg2hw.intr_ctrl_en_falling.q;
Tests: T24 T25 T26
139 1/1 assign event_intr_acthigh = data_in_d & reg2hw.intr_ctrl_en_lvlhigh.q;
Tests: T24 T25 T26
140 1/1 assign event_intr_actlow = ~data_in_d & reg2hw.intr_ctrl_en_lvllow.q;
Tests: T24 T25 T26
141
142 1/1 assign event_intr_combined = event_intr_rise |
Tests: T24 T25 T26
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: T24 T25 T26
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 | T32,T45,T16 |
1 | 0 | Covered | T24,T25,T26 |
1 | 1 | Covered | T32,T45,T16 |
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 |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
rst_ni |
Yes |
Yes |
T33,T42,T34 |
Yes |
T24,T25,T26 |
INPUT |
tl_i.d_ready |
Yes |
Yes |
T24,T26,T29 |
Yes |
T24,T25,T26 |
INPUT |
tl_i.a_user.data_intg[6:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
tl_i.a_user.cmd_intg[6:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
tl_i.a_user.instr_type[3:0] |
Yes |
Yes |
T26,T29,T30 |
Yes |
T26,T29,T30 |
INPUT |
tl_i.a_user.rsvd[4:0] |
Unreachable |
Unreachable |
|
Unreachable |
|
INPUT |
tl_i.a_data[31:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
tl_i.a_mask[3:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
tl_i.a_address[31:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
tl_i.a_source[7:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
tl_i.a_size[1:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
tl_i.a_param[2:0] |
Unreachable |
Unreachable |
|
Unreachable |
|
INPUT |
tl_i.a_opcode[2:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
tl_i.a_valid |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
tl_o.a_ready |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
OUTPUT |
tl_o.d_error |
Yes |
Yes |
T36,T37,T38 |
Yes |
T36,T37,T38 |
OUTPUT |
tl_o.d_user.data_intg[6:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
OUTPUT |
tl_o.d_user.rsp_intg[5:0] |
Yes |
Yes |
*T24,*T25,*T26 |
Yes |
T24,T25,T26 |
OUTPUT |
tl_o.d_user.rsp_intg[6] |
Unreachable |
Unreachable |
|
Unreachable |
|
OUTPUT |
tl_o.d_data[31:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
OUTPUT |
tl_o.d_sink |
Unreachable |
Unreachable |
|
Unreachable |
|
OUTPUT |
tl_o.d_source[7:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
OUTPUT |
tl_o.d_size[1:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
OUTPUT |
tl_o.d_param[2:0] |
Unreachable |
Unreachable |
|
Unreachable |
|
OUTPUT |
tl_o.d_opcode[0] |
Yes |
Yes |
*T24,*T25,*T26 |
Yes |
T24,T25,T26 |
OUTPUT |
tl_o.d_opcode[2:1] |
Unreachable |
Unreachable |
|
Unreachable |
|
OUTPUT |
tl_o.d_valid |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
OUTPUT |
intr_gpio_o[31:0] |
Yes |
Yes |
T30,T33,T34 |
Yes |
T30,T33,T34 |
OUTPUT |
alert_rx_i[0].ack_n |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
alert_rx_i[0].ack_p |
Yes |
Yes |
T32,T42,T45 |
Yes |
T32,T42,T45 |
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 |
T24,T25,T26 |
Yes |
T24,T25,T26 |
OUTPUT |
alert_tx_o[0].alert_p |
Yes |
Yes |
T32,T42,T45 |
Yes |
T32,T42,T45 |
OUTPUT |
cio_gpio_i[31:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
INPUT |
cio_gpio_o[31:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
OUTPUT |
cio_gpio_en_o[31:0] |
Yes |
Yes |
T24,T25,T26 |
Yes |
T24,T25,T26 |
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 |
T24,T25,T26 |
0 |
1 |
- |
- |
Covered |
T24,T25,T26 |
0 |
0 |
1 |
- |
Covered |
T25,T27,T28 |
0 |
0 |
0 |
1 |
Covered |
T25,T27,T28 |
0 |
0 |
0 |
0 |
Covered |
T24,T25,T26 |
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 |
T24,T25,T26 |
0 |
1 |
- |
- |
Covered |
T24,T25,T26 |
0 |
0 |
1 |
- |
Covered |
T25,T27,T28 |
0 |
0 |
0 |
1 |
Covered |
T25,T27,T28 |
0 |
0 |
0 |
0 |
Covered |
T24,T25,T26 |
Assert Coverage for Module :
gpio
Assertion Details
AlertsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
50434711 |
50089558 |
0 |
0 |
T24 |
2621 |
2529 |
0 |
0 |
T25 |
1691 |
1598 |
0 |
0 |
T26 |
6801 |
6735 |
0 |
0 |
T27 |
2437 |
2344 |
0 |
0 |
T28 |
3075 |
3012 |
0 |
0 |
T29 |
7724 |
7664 |
0 |
0 |
T30 |
5170 |
5093 |
0 |
0 |
T31 |
7264 |
7185 |
0 |
0 |
T32 |
792 |
722 |
0 |
0 |
T33 |
5877 |
4511 |
0 |
0 |
CioGpioEnOKnown
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
50434711 |
50089558 |
0 |
0 |
T24 |
2621 |
2529 |
0 |
0 |
T25 |
1691 |
1598 |
0 |
0 |
T26 |
6801 |
6735 |
0 |
0 |
T27 |
2437 |
2344 |
0 |
0 |
T28 |
3075 |
3012 |
0 |
0 |
T29 |
7724 |
7664 |
0 |
0 |
T30 |
5170 |
5093 |
0 |
0 |
T31 |
7264 |
7185 |
0 |
0 |
T32 |
792 |
722 |
0 |
0 |
T33 |
5877 |
4511 |
0 |
0 |
CioGpioOKnown
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
50434711 |
50089558 |
0 |
0 |
T24 |
2621 |
2529 |
0 |
0 |
T25 |
1691 |
1598 |
0 |
0 |
T26 |
6801 |
6735 |
0 |
0 |
T27 |
2437 |
2344 |
0 |
0 |
T28 |
3075 |
3012 |
0 |
0 |
T29 |
7724 |
7664 |
0 |
0 |
T30 |
5170 |
5093 |
0 |
0 |
T31 |
7264 |
7185 |
0 |
0 |
T32 |
792 |
722 |
0 |
0 |
T33 |
5877 |
4511 |
0 |
0 |
FpvSecCmRegWeOnehotCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
50434711 |
130 |
0 |
0 |
T34 |
5185 |
0 |
0 |
0 |
T35 |
7229 |
0 |
0 |
0 |
T42 |
5580 |
20 |
0 |
0 |
T43 |
0 |
30 |
0 |
0 |
T44 |
0 |
20 |
0 |
0 |
T45 |
1152 |
0 |
0 |
0 |
T50 |
1522 |
0 |
0 |
0 |
T58 |
0 |
30 |
0 |
0 |
T59 |
0 |
30 |
0 |
0 |
T60 |
1810 |
0 |
0 |
0 |
T61 |
3136 |
0 |
0 |
0 |
T62 |
3146 |
0 |
0 |
0 |
T63 |
6674 |
0 |
0 |
0 |
T64 |
7927 |
0 |
0 |
0 |
IntrGpioKnown
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
50434711 |
50089558 |
0 |
0 |
T24 |
2621 |
2529 |
0 |
0 |
T25 |
1691 |
1598 |
0 |
0 |
T26 |
6801 |
6735 |
0 |
0 |
T27 |
2437 |
2344 |
0 |
0 |
T28 |
3075 |
3012 |
0 |
0 |
T29 |
7724 |
7664 |
0 |
0 |
T30 |
5170 |
5093 |
0 |
0 |
T31 |
7264 |
7185 |
0 |
0 |
T32 |
792 |
722 |
0 |
0 |
T33 |
5877 |
4511 |
0 |
0 |