Line Coverage for Module :
prim_subreg_shadow
| Line No. | Total | Covered | Percent |
TOTAL | | 16 | 16 | 100.00 |
CONT_ASSIGN | 94 | 1 | 1 | 100.00 |
ALWAYS | 100 | 6 | 6 | 100.00 |
CONT_ASSIGN | 113 | 1 | 1 | 100.00 |
CONT_ASSIGN | 114 | 0 | 0 | |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 0 | 0 | |
CONT_ASSIGN | 160 | 1 | 1 | 100.00 |
CONT_ASSIGN | 161 | 0 | 0 | |
CONT_ASSIGN | 180 | 1 | 1 | 100.00 |
CONT_ASSIGN | 183 | 1 | 1 | 100.00 |
CONT_ASSIGN | 184 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 188 | 1 | 1 | 100.00 |
CONT_ASSIGN | 189 | 1 | 1 | 100.00 |
93 // - In case of RO, SW should not interfere with update process.
94 1/1 assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
Tests: T12 T13 T30
95
96 // Phase tracker:
97 // - Reads from SW clear the phase back to 0.
98 // - Writes have priority (can come from SW or HW).
99 always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100 1/1 if (!rst_ni) begin
Tests: T4 T5 T6
101 1/1 phase_q <= 1'b0;
Tests: T4 T5 T6
102 1/1 end else if (wr_en && !err_storage) begin
Tests: T4 T5 T6
103 1/1 phase_q <= ~phase_q;
Tests: T1 T2 T3
104 1/1 end else if (phase_clear || err_storage) begin
Tests: T4 T5 T6
105 1/1 phase_q <= 1'b0;
Tests: T12 T13 T30
106 end
MISSING_ELSE
107 end
108
109 // The staged register:
110 // - Holds the 1's complement value.
111 // - Written in Phase 0.
112 // - Once storage error occurs, do not allow any further update until reset
113 1/1 assign staged_we = we & ~phase_q & ~err_storage;
Tests: T1 T2 T3
114 unreachable assign staged_de = de & ~phase_q & ~err_storage;
115 prim_subreg #(
116 .DW ( DW ),
117 .SwAccess ( StagedSwAccess ),
118 .RESVAL ( ~RESVAL )
119 ) staged_reg (
120 .clk_i ( clk_i ),
121 .rst_ni ( rst_ni ),
122 .we ( staged_we ),
123 .wd ( ~wr_data ),
124 .de ( staged_de ),
125 .d ( ~d ),
126 .qe ( ),
127 .q ( staged_q ),
128 .ds ( ),
129 .qs ( )
130 );
131
132 // The shadow register:
133 // - Holds the 1's complement value.
134 // - Written in Phase 1.
135 // - Writes are ignored in case of update errors.
136 // - Gets the value from the staged register.
137 // - Once storage error occurs, do not allow any further update until reset
138 1/1 assign shadow_we = we & phase_q & ~err_update & ~err_storage;
Tests: T1 T2 T3
139 unreachable assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140 prim_subreg #(
141 .DW ( DW ),
142 .SwAccess ( InvertedSwAccess ),
143 .RESVAL ( ~RESVAL )
144 ) shadow_reg (
145 .clk_i ( clk_i ),
146 .rst_ni ( rst_shadowed_ni ),
147 .we ( shadow_we ),
148 .wd ( staged_q ),
149 .de ( shadow_de ),
150 .d ( staged_q ),
151 .qe ( ),
152 .q ( shadow_q ),
153 .ds ( ),
154 .qs ( )
155 );
156
157 // The committed register:
158 // - Written in Phase 1.
159 // - Writes are ignored in case of update errors.
160 1/1 assign committed_we = shadow_we;
Tests: T1 T2 T3
161 unreachable assign committed_de = shadow_de;
162 prim_subreg #(
163 .DW ( DW ),
164 .SwAccess ( SwAccess ),
165 .RESVAL ( RESVAL )
166 ) committed_reg (
167 .clk_i ( clk_i ),
168 .rst_ni ( rst_ni ),
169 .we ( committed_we ),
170 .wd ( wr_data ),
171 .de ( committed_de ),
172 .d ( d ),
173 .qe ( committed_qe ),
174 .q ( committed_q ),
175 .ds ( ds ),
176 .qs ( committed_qs )
177 );
178
179 // Output phase for hwext.
180 1/1 assign phase = phase_q;
Tests: T1 T2 T3
181
182 // Error detection - all bits must match.
183 1/1 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
Tests: T1 T2 T3
184 1/1 assign err_storage = (~shadow_q != committed_q);
Tests: T1 T2 T3
185
186 // Remaining output assignments
187 1/1 assign qe = committed_qe;
Tests: T1 T2 T3
188 1/1 assign q = committed_q;
Tests: T1 T2 T3
189 1/1 assign qs = committed_qs;
Tests: T1 T2 T3
Cond Coverage for Module :
prim_subreg_shadow
| Total | Covered | Percent |
Conditions | 26 | 25 | 96.15 |
Logical | 26 | 25 | 96.15 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 102
EXPRESSION (wr_en && ((!err_storage)))
--1-- --------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T4,T5,T6 |
1 | 0 | Covered | T71,T72,T73 |
1 | 1 | Covered | T1,T2,T3 |
LINE 104
EXPRESSION (phase_clear || err_storage)
-----1----- -----2-----
-1- | -2- | Status | Tests |
0 | 0 | Covered | T4,T5,T6 |
0 | 1 | Covered | T71,T72,T73 |
1 | 0 | Covered | T12,T13,T30 |
LINE 113
EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | Covered | T71,T72,T73 |
1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 114
EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Unreachable | |
1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | Unreachable | |
LINE 138
EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | 1 | Covered | T71,T72,T73 |
1 | 1 | 1 | 0 | Not Covered | |
1 | 1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 139
EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Unreachable | |
1 | 1 | 0 | 1 | Unreachable | |
1 | 1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | 1 | Unreachable | |
LINE 183
EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION ((~staged_q) != wr_data)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION (phase_q & wr_en)
---1--- --2--
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T71,T72,T73 |
LINE 184
EXPRESSION ((~shadow_q) != committed_q)
--------------1-------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T71,T72,T73 |
Branch Coverage for Module :
prim_subreg_shadow
| Line No. | Total | Covered | Percent |
Branches |
|
6 |
6 |
100.00 |
TERNARY |
183 |
2 |
2 |
100.00 |
IF |
100 |
4 |
4 |
100.00 |
183 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T1,T2,T3 |
100 if (!rst_ni) begin
-1-
101 phase_q <= 1'b0;
==>
102 end else if (wr_en && !err_storage) begin
-2-
103 phase_q <= ~phase_q;
==>
104 end else if (phase_clear || err_storage) begin
-3-
105 phase_q <= 1'b0;
==>
106 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | Status | Tests |
1 |
- |
- |
Covered |
T4,T5,T6 |
0 |
1 |
- |
Covered |
T1,T2,T3 |
0 |
0 |
1 |
Covered |
T12,T13,T30 |
0 |
0 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Module :
prim_subreg_shadow
Assertion Details
CheckSwAccessIsLegal_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
10100 |
10100 |
0 |
0 |
T4 |
10 |
10 |
0 |
0 |
T5 |
10 |
10 |
0 |
0 |
T6 |
10 |
10 |
0 |
0 |
T32 |
10 |
10 |
0 |
0 |
T33 |
10 |
10 |
0 |
0 |
T34 |
10 |
10 |
0 |
0 |
T35 |
10 |
10 |
0 |
0 |
T36 |
10 |
10 |
0 |
0 |
T37 |
10 |
10 |
0 |
0 |
T38 |
10 |
10 |
0 |
0 |
MubiIsNotYetSupported_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
472998704 |
446503778 |
0 |
0 |
T4 |
9976 |
9508 |
0 |
0 |
T5 |
27276 |
26336 |
0 |
0 |
T6 |
10556 |
9690 |
0 |
0 |
T32 |
33842 |
32812 |
0 |
0 |
T33 |
8860 |
7974 |
0 |
0 |
T34 |
13546 |
12368 |
0 |
0 |
T35 |
41350 |
40012 |
0 |
0 |
T36 |
40378 |
39132 |
0 |
0 |
T37 |
235826 |
235358 |
0 |
0 |
T38 |
364578 |
363670 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
| Line No. | Total | Covered | Percent |
TOTAL | | 16 | 16 | 100.00 |
CONT_ASSIGN | 94 | 1 | 1 | 100.00 |
ALWAYS | 100 | 6 | 6 | 100.00 |
CONT_ASSIGN | 113 | 1 | 1 | 100.00 |
CONT_ASSIGN | 114 | 0 | 0 | |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 0 | 0 | |
CONT_ASSIGN | 160 | 1 | 1 | 100.00 |
CONT_ASSIGN | 161 | 0 | 0 | |
CONT_ASSIGN | 180 | 1 | 1 | 100.00 |
CONT_ASSIGN | 183 | 1 | 1 | 100.00 |
CONT_ASSIGN | 184 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 188 | 1 | 1 | 100.00 |
CONT_ASSIGN | 189 | 1 | 1 | 100.00 |
93 // - In case of RO, SW should not interfere with update process.
94 1/1 assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
Tests: T12 T13 T30
95
96 // Phase tracker:
97 // - Reads from SW clear the phase back to 0.
98 // - Writes have priority (can come from SW or HW).
99 always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100 1/1 if (!rst_ni) begin
Tests: T4 T5 T6
101 1/1 phase_q <= 1'b0;
Tests: T4 T5 T6
102 1/1 end else if (wr_en && !err_storage) begin
Tests: T4 T5 T6
103 1/1 phase_q <= ~phase_q;
Tests: T1 T2 T3
104 1/1 end else if (phase_clear || err_storage) begin
Tests: T4 T5 T6
105 1/1 phase_q <= 1'b0;
Tests: T12 T13 T30
106 end
MISSING_ELSE
107 end
108
109 // The staged register:
110 // - Holds the 1's complement value.
111 // - Written in Phase 0.
112 // - Once storage error occurs, do not allow any further update until reset
113 1/1 assign staged_we = we & ~phase_q & ~err_storage;
Tests: T1 T2 T3
114 unreachable assign staged_de = de & ~phase_q & ~err_storage;
115 prim_subreg #(
116 .DW ( DW ),
117 .SwAccess ( StagedSwAccess ),
118 .RESVAL ( ~RESVAL )
119 ) staged_reg (
120 .clk_i ( clk_i ),
121 .rst_ni ( rst_ni ),
122 .we ( staged_we ),
123 .wd ( ~wr_data ),
124 .de ( staged_de ),
125 .d ( ~d ),
126 .qe ( ),
127 .q ( staged_q ),
128 .ds ( ),
129 .qs ( )
130 );
131
132 // The shadow register:
133 // - Holds the 1's complement value.
134 // - Written in Phase 1.
135 // - Writes are ignored in case of update errors.
136 // - Gets the value from the staged register.
137 // - Once storage error occurs, do not allow any further update until reset
138 1/1 assign shadow_we = we & phase_q & ~err_update & ~err_storage;
Tests: T1 T2 T3
139 unreachable assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140 prim_subreg #(
141 .DW ( DW ),
142 .SwAccess ( InvertedSwAccess ),
143 .RESVAL ( ~RESVAL )
144 ) shadow_reg (
145 .clk_i ( clk_i ),
146 .rst_ni ( rst_shadowed_ni ),
147 .we ( shadow_we ),
148 .wd ( staged_q ),
149 .de ( shadow_de ),
150 .d ( staged_q ),
151 .qe ( ),
152 .q ( shadow_q ),
153 .ds ( ),
154 .qs ( )
155 );
156
157 // The committed register:
158 // - Written in Phase 1.
159 // - Writes are ignored in case of update errors.
160 1/1 assign committed_we = shadow_we;
Tests: T1 T2 T3
161 unreachable assign committed_de = shadow_de;
162 prim_subreg #(
163 .DW ( DW ),
164 .SwAccess ( SwAccess ),
165 .RESVAL ( RESVAL )
166 ) committed_reg (
167 .clk_i ( clk_i ),
168 .rst_ni ( rst_ni ),
169 .we ( committed_we ),
170 .wd ( wr_data ),
171 .de ( committed_de ),
172 .d ( d ),
173 .qe ( committed_qe ),
174 .q ( committed_q ),
175 .ds ( ds ),
176 .qs ( committed_qs )
177 );
178
179 // Output phase for hwext.
180 1/1 assign phase = phase_q;
Tests: T1 T2 T3
181
182 // Error detection - all bits must match.
183 1/1 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
Tests: T1 T2 T3
184 1/1 assign err_storage = (~shadow_q != committed_q);
Tests: T1 T2 T3
185
186 // Remaining output assignments
187 1/1 assign qe = committed_qe;
Tests: T1 T2 T3
188 1/1 assign q = committed_q;
Tests: T1 T2 T3
189 1/1 assign qs = committed_qs;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
| Total | Covered | Percent |
Conditions | 26 | 25 | 96.15 |
Logical | 26 | 25 | 96.15 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 102
EXPRESSION (wr_en && ((!err_storage)))
--1-- --------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T4,T5,T6 |
1 | 0 | Covered | T71,T73,T74 |
1 | 1 | Covered | T1,T2,T3 |
LINE 104
EXPRESSION (phase_clear || err_storage)
-----1----- -----2-----
-1- | -2- | Status | Tests |
0 | 0 | Covered | T4,T5,T6 |
0 | 1 | Covered | T71,T73,T74 |
1 | 0 | Covered | T12,T13,T30 |
LINE 113
EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | Covered | T71,T73,T74 |
1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 114
EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Unreachable | |
1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | Unreachable | |
LINE 138
EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | 1 | Covered | T71,T73,T75 |
1 | 1 | 1 | 0 | Not Covered | |
1 | 1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 139
EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Unreachable | |
1 | 1 | 0 | 1 | Unreachable | |
1 | 1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | 1 | Unreachable | |
LINE 183
EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION ((~staged_q) != wr_data)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION (phase_q & wr_en)
---1--- --2--
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T71,T73,T75 |
LINE 184
EXPRESSION ((~shadow_q) != committed_q)
--------------1-------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T71,T73,T74 |
Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
| Line No. | Total | Covered | Percent |
Branches |
|
6 |
6 |
100.00 |
TERNARY |
183 |
2 |
2 |
100.00 |
IF |
100 |
4 |
4 |
100.00 |
183 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T1,T2,T3 |
100 if (!rst_ni) begin
-1-
101 phase_q <= 1'b0;
==>
102 end else if (wr_en && !err_storage) begin
-2-
103 phase_q <= ~phase_q;
==>
104 end else if (phase_clear || err_storage) begin
-3-
105 phase_q <= 1'b0;
==>
106 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | Status | Tests |
1 |
- |
- |
Covered |
T4,T5,T6 |
0 |
1 |
- |
Covered |
T1,T2,T3 |
0 |
0 |
1 |
Covered |
T12,T13,T30 |
0 |
0 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
Assertion Details
CheckSwAccessIsLegal_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
MubiIsNotYetSupported_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
70064433 |
65604237 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
4149 |
4001 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
5146 |
4984 |
0 |
0 |
T33 |
1372 |
1210 |
0 |
0 |
T34 |
2062 |
1858 |
0 |
0 |
T35 |
6187 |
5956 |
0 |
0 |
T36 |
5973 |
5756 |
0 |
0 |
T37 |
35276 |
35196 |
0 |
0 |
T38 |
55403 |
55240 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
| Line No. | Total | Covered | Percent |
TOTAL | | 16 | 16 | 100.00 |
CONT_ASSIGN | 94 | 1 | 1 | 100.00 |
ALWAYS | 100 | 6 | 6 | 100.00 |
CONT_ASSIGN | 113 | 1 | 1 | 100.00 |
CONT_ASSIGN | 114 | 0 | 0 | |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 0 | 0 | |
CONT_ASSIGN | 160 | 1 | 1 | 100.00 |
CONT_ASSIGN | 161 | 0 | 0 | |
CONT_ASSIGN | 180 | 1 | 1 | 100.00 |
CONT_ASSIGN | 183 | 1 | 1 | 100.00 |
CONT_ASSIGN | 184 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 188 | 1 | 1 | 100.00 |
CONT_ASSIGN | 189 | 1 | 1 | 100.00 |
93 // - In case of RO, SW should not interfere with update process.
94 1/1 assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
Tests: T12 T13 T30
95
96 // Phase tracker:
97 // - Reads from SW clear the phase back to 0.
98 // - Writes have priority (can come from SW or HW).
99 always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100 1/1 if (!rst_ni) begin
Tests: T4 T5 T6
101 1/1 phase_q <= 1'b0;
Tests: T4 T5 T6
102 1/1 end else if (wr_en && !err_storage) begin
Tests: T4 T5 T6
103 1/1 phase_q <= ~phase_q;
Tests: T1 T2 T3
104 1/1 end else if (phase_clear || err_storage) begin
Tests: T4 T5 T6
105 1/1 phase_q <= 1'b0;
Tests: T12 T13 T30
106 end
MISSING_ELSE
107 end
108
109 // The staged register:
110 // - Holds the 1's complement value.
111 // - Written in Phase 0.
112 // - Once storage error occurs, do not allow any further update until reset
113 1/1 assign staged_we = we & ~phase_q & ~err_storage;
Tests: T1 T2 T3
114 unreachable assign staged_de = de & ~phase_q & ~err_storage;
115 prim_subreg #(
116 .DW ( DW ),
117 .SwAccess ( StagedSwAccess ),
118 .RESVAL ( ~RESVAL )
119 ) staged_reg (
120 .clk_i ( clk_i ),
121 .rst_ni ( rst_ni ),
122 .we ( staged_we ),
123 .wd ( ~wr_data ),
124 .de ( staged_de ),
125 .d ( ~d ),
126 .qe ( ),
127 .q ( staged_q ),
128 .ds ( ),
129 .qs ( )
130 );
131
132 // The shadow register:
133 // - Holds the 1's complement value.
134 // - Written in Phase 1.
135 // - Writes are ignored in case of update errors.
136 // - Gets the value from the staged register.
137 // - Once storage error occurs, do not allow any further update until reset
138 1/1 assign shadow_we = we & phase_q & ~err_update & ~err_storage;
Tests: T1 T2 T3
139 unreachable assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140 prim_subreg #(
141 .DW ( DW ),
142 .SwAccess ( InvertedSwAccess ),
143 .RESVAL ( ~RESVAL )
144 ) shadow_reg (
145 .clk_i ( clk_i ),
146 .rst_ni ( rst_shadowed_ni ),
147 .we ( shadow_we ),
148 .wd ( staged_q ),
149 .de ( shadow_de ),
150 .d ( staged_q ),
151 .qe ( ),
152 .q ( shadow_q ),
153 .ds ( ),
154 .qs ( )
155 );
156
157 // The committed register:
158 // - Written in Phase 1.
159 // - Writes are ignored in case of update errors.
160 1/1 assign committed_we = shadow_we;
Tests: T1 T2 T3
161 unreachable assign committed_de = shadow_de;
162 prim_subreg #(
163 .DW ( DW ),
164 .SwAccess ( SwAccess ),
165 .RESVAL ( RESVAL )
166 ) committed_reg (
167 .clk_i ( clk_i ),
168 .rst_ni ( rst_ni ),
169 .we ( committed_we ),
170 .wd ( wr_data ),
171 .de ( committed_de ),
172 .d ( d ),
173 .qe ( committed_qe ),
174 .q ( committed_q ),
175 .ds ( ds ),
176 .qs ( committed_qs )
177 );
178
179 // Output phase for hwext.
180 1/1 assign phase = phase_q;
Tests: T1 T2 T3
181
182 // Error detection - all bits must match.
183 1/1 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
Tests: T1 T2 T3
184 1/1 assign err_storage = (~shadow_q != committed_q);
Tests: T1 T2 T3
185
186 // Remaining output assignments
187 1/1 assign qe = committed_qe;
Tests: T1 T2 T3
188 1/1 assign q = committed_q;
Tests: T1 T2 T3
189 1/1 assign qs = committed_qs;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
| Total | Covered | Percent |
Conditions | 26 | 25 | 96.15 |
Logical | 26 | 25 | 96.15 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 102
EXPRESSION (wr_en && ((!err_storage)))
--1-- --------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T4,T5,T6 |
1 | 0 | Covered | T71,T73,T74 |
1 | 1 | Covered | T1,T2,T3 |
LINE 104
EXPRESSION (phase_clear || err_storage)
-----1----- -----2-----
-1- | -2- | Status | Tests |
0 | 0 | Covered | T4,T5,T6 |
0 | 1 | Covered | T71,T73,T74 |
1 | 0 | Covered | T12,T13,T30 |
LINE 113
EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | Covered | T71,T73,T74 |
1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 114
EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Unreachable | |
1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | Unreachable | |
LINE 138
EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | 1 | Covered | T71,T73,T76 |
1 | 1 | 1 | 0 | Not Covered | |
1 | 1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 139
EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Unreachable | |
1 | 1 | 0 | 1 | Unreachable | |
1 | 1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | 1 | Unreachable | |
LINE 183
EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION ((~staged_q) != wr_data)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION (phase_q & wr_en)
---1--- --2--
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T71,T73,T76 |
LINE 184
EXPRESSION ((~shadow_q) != committed_q)
--------------1-------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T71,T73,T74 |
Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
| Line No. | Total | Covered | Percent |
Branches |
|
6 |
6 |
100.00 |
TERNARY |
183 |
2 |
2 |
100.00 |
IF |
100 |
4 |
4 |
100.00 |
183 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T1,T2,T3 |
100 if (!rst_ni) begin
-1-
101 phase_q <= 1'b0;
==>
102 end else if (wr_en && !err_storage) begin
-2-
103 phase_q <= ~phase_q;
==>
104 end else if (phase_clear || err_storage) begin
-3-
105 phase_q <= 1'b0;
==>
106 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | Status | Tests |
1 |
- |
- |
Covered |
T4,T5,T6 |
0 |
1 |
- |
Covered |
T1,T2,T3 |
0 |
0 |
1 |
Covered |
T12,T13,T30 |
0 |
0 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
Assertion Details
CheckSwAccessIsLegal_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
MubiIsNotYetSupported_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
70064433 |
65604237 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
4149 |
4001 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
5146 |
4984 |
0 |
0 |
T33 |
1372 |
1210 |
0 |
0 |
T34 |
2062 |
1858 |
0 |
0 |
T35 |
6187 |
5956 |
0 |
0 |
T36 |
5973 |
5756 |
0 |
0 |
T37 |
35276 |
35196 |
0 |
0 |
T38 |
55403 |
55240 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
| Line No. | Total | Covered | Percent |
TOTAL | | 16 | 16 | 100.00 |
CONT_ASSIGN | 94 | 1 | 1 | 100.00 |
ALWAYS | 100 | 6 | 6 | 100.00 |
CONT_ASSIGN | 113 | 1 | 1 | 100.00 |
CONT_ASSIGN | 114 | 0 | 0 | |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 0 | 0 | |
CONT_ASSIGN | 160 | 1 | 1 | 100.00 |
CONT_ASSIGN | 161 | 0 | 0 | |
CONT_ASSIGN | 180 | 1 | 1 | 100.00 |
CONT_ASSIGN | 183 | 1 | 1 | 100.00 |
CONT_ASSIGN | 184 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 188 | 1 | 1 | 100.00 |
CONT_ASSIGN | 189 | 1 | 1 | 100.00 |
93 // - In case of RO, SW should not interfere with update process.
94 1/1 assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
Tests: T12 T13 T30
95
96 // Phase tracker:
97 // - Reads from SW clear the phase back to 0.
98 // - Writes have priority (can come from SW or HW).
99 always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100 1/1 if (!rst_ni) begin
Tests: T4 T5 T6
101 1/1 phase_q <= 1'b0;
Tests: T4 T5 T6
102 1/1 end else if (wr_en && !err_storage) begin
Tests: T4 T5 T6
103 1/1 phase_q <= ~phase_q;
Tests: T1 T2 T3
104 1/1 end else if (phase_clear || err_storage) begin
Tests: T4 T5 T6
105 1/1 phase_q <= 1'b0;
Tests: T12 T13 T30
106 end
MISSING_ELSE
107 end
108
109 // The staged register:
110 // - Holds the 1's complement value.
111 // - Written in Phase 0.
112 // - Once storage error occurs, do not allow any further update until reset
113 1/1 assign staged_we = we & ~phase_q & ~err_storage;
Tests: T1 T2 T3
114 unreachable assign staged_de = de & ~phase_q & ~err_storage;
115 prim_subreg #(
116 .DW ( DW ),
117 .SwAccess ( StagedSwAccess ),
118 .RESVAL ( ~RESVAL )
119 ) staged_reg (
120 .clk_i ( clk_i ),
121 .rst_ni ( rst_ni ),
122 .we ( staged_we ),
123 .wd ( ~wr_data ),
124 .de ( staged_de ),
125 .d ( ~d ),
126 .qe ( ),
127 .q ( staged_q ),
128 .ds ( ),
129 .qs ( )
130 );
131
132 // The shadow register:
133 // - Holds the 1's complement value.
134 // - Written in Phase 1.
135 // - Writes are ignored in case of update errors.
136 // - Gets the value from the staged register.
137 // - Once storage error occurs, do not allow any further update until reset
138 1/1 assign shadow_we = we & phase_q & ~err_update & ~err_storage;
Tests: T1 T2 T3
139 unreachable assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140 prim_subreg #(
141 .DW ( DW ),
142 .SwAccess ( InvertedSwAccess ),
143 .RESVAL ( ~RESVAL )
144 ) shadow_reg (
145 .clk_i ( clk_i ),
146 .rst_ni ( rst_shadowed_ni ),
147 .we ( shadow_we ),
148 .wd ( staged_q ),
149 .de ( shadow_de ),
150 .d ( staged_q ),
151 .qe ( ),
152 .q ( shadow_q ),
153 .ds ( ),
154 .qs ( )
155 );
156
157 // The committed register:
158 // - Written in Phase 1.
159 // - Writes are ignored in case of update errors.
160 1/1 assign committed_we = shadow_we;
Tests: T1 T2 T3
161 unreachable assign committed_de = shadow_de;
162 prim_subreg #(
163 .DW ( DW ),
164 .SwAccess ( SwAccess ),
165 .RESVAL ( RESVAL )
166 ) committed_reg (
167 .clk_i ( clk_i ),
168 .rst_ni ( rst_ni ),
169 .we ( committed_we ),
170 .wd ( wr_data ),
171 .de ( committed_de ),
172 .d ( d ),
173 .qe ( committed_qe ),
174 .q ( committed_q ),
175 .ds ( ds ),
176 .qs ( committed_qs )
177 );
178
179 // Output phase for hwext.
180 1/1 assign phase = phase_q;
Tests: T1 T2 T3
181
182 // Error detection - all bits must match.
183 1/1 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
Tests: T1 T2 T3
184 1/1 assign err_storage = (~shadow_q != committed_q);
Tests: T1 T2 T3
185
186 // Remaining output assignments
187 1/1 assign qe = committed_qe;
Tests: T1 T2 T3
188 1/1 assign q = committed_q;
Tests: T1 T2 T3
189 1/1 assign qs = committed_qs;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
| Total | Covered | Percent |
Conditions | 26 | 25 | 96.15 |
Logical | 26 | 25 | 96.15 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 102
EXPRESSION (wr_en && ((!err_storage)))
--1-- --------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T4,T5,T6 |
1 | 0 | Covered | T71,T77,T74 |
1 | 1 | Covered | T1,T2,T3 |
LINE 104
EXPRESSION (phase_clear || err_storage)
-----1----- -----2-----
-1- | -2- | Status | Tests |
0 | 0 | Covered | T4,T5,T6 |
0 | 1 | Covered | T71,T72,T73 |
1 | 0 | Covered | T12,T13,T30 |
LINE 113
EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | Covered | T71,T77,T74 |
1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 114
EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Unreachable | |
1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | Unreachable | |
LINE 138
EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | 1 | Covered | T71,T73,T77 |
1 | 1 | 1 | 0 | Not Covered | |
1 | 1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 139
EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Unreachable | |
1 | 1 | 0 | 1 | Unreachable | |
1 | 1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | 1 | Unreachable | |
LINE 183
EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION ((~staged_q) != wr_data)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION (phase_q & wr_en)
---1--- --2--
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T71,T73,T77 |
LINE 184
EXPRESSION ((~shadow_q) != committed_q)
--------------1-------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T71,T72,T73 |
Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
| Line No. | Total | Covered | Percent |
Branches |
|
6 |
6 |
100.00 |
TERNARY |
183 |
2 |
2 |
100.00 |
IF |
100 |
4 |
4 |
100.00 |
183 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T1,T2,T3 |
100 if (!rst_ni) begin
-1-
101 phase_q <= 1'b0;
==>
102 end else if (wr_en && !err_storage) begin
-2-
103 phase_q <= ~phase_q;
==>
104 end else if (phase_clear || err_storage) begin
-3-
105 phase_q <= 1'b0;
==>
106 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | Status | Tests |
1 |
- |
- |
Covered |
T4,T5,T6 |
0 |
1 |
- |
Covered |
T1,T2,T3 |
0 |
0 |
1 |
Covered |
T12,T13,T30 |
0 |
0 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
Assertion Details
CheckSwAccessIsLegal_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
MubiIsNotYetSupported_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34075430 |
32957398 |
0 |
0 |
T4 |
820 |
799 |
0 |
0 |
T5 |
2062 |
2000 |
0 |
0 |
T6 |
750 |
736 |
0 |
0 |
T32 |
2561 |
2492 |
0 |
0 |
T33 |
626 |
605 |
0 |
0 |
T34 |
1023 |
975 |
0 |
0 |
T35 |
3300 |
3245 |
0 |
0 |
T36 |
3339 |
3291 |
0 |
0 |
T37 |
18835 |
18814 |
0 |
0 |
T38 |
27648 |
27620 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
| Line No. | Total | Covered | Percent |
TOTAL | | 16 | 16 | 100.00 |
CONT_ASSIGN | 94 | 1 | 1 | 100.00 |
ALWAYS | 100 | 6 | 6 | 100.00 |
CONT_ASSIGN | 113 | 1 | 1 | 100.00 |
CONT_ASSIGN | 114 | 0 | 0 | |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 0 | 0 | |
CONT_ASSIGN | 160 | 1 | 1 | 100.00 |
CONT_ASSIGN | 161 | 0 | 0 | |
CONT_ASSIGN | 180 | 1 | 1 | 100.00 |
CONT_ASSIGN | 183 | 1 | 1 | 100.00 |
CONT_ASSIGN | 184 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 188 | 1 | 1 | 100.00 |
CONT_ASSIGN | 189 | 1 | 1 | 100.00 |
93 // - In case of RO, SW should not interfere with update process.
94 1/1 assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
Tests: T12 T13 T30
95
96 // Phase tracker:
97 // - Reads from SW clear the phase back to 0.
98 // - Writes have priority (can come from SW or HW).
99 always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100 1/1 if (!rst_ni) begin
Tests: T4 T5 T6
101 1/1 phase_q <= 1'b0;
Tests: T4 T5 T6
102 1/1 end else if (wr_en && !err_storage) begin
Tests: T4 T5 T6
103 1/1 phase_q <= ~phase_q;
Tests: T1 T2 T3
104 1/1 end else if (phase_clear || err_storage) begin
Tests: T4 T5 T6
105 1/1 phase_q <= 1'b0;
Tests: T12 T13 T30
106 end
MISSING_ELSE
107 end
108
109 // The staged register:
110 // - Holds the 1's complement value.
111 // - Written in Phase 0.
112 // - Once storage error occurs, do not allow any further update until reset
113 1/1 assign staged_we = we & ~phase_q & ~err_storage;
Tests: T1 T2 T3
114 unreachable assign staged_de = de & ~phase_q & ~err_storage;
115 prim_subreg #(
116 .DW ( DW ),
117 .SwAccess ( StagedSwAccess ),
118 .RESVAL ( ~RESVAL )
119 ) staged_reg (
120 .clk_i ( clk_i ),
121 .rst_ni ( rst_ni ),
122 .we ( staged_we ),
123 .wd ( ~wr_data ),
124 .de ( staged_de ),
125 .d ( ~d ),
126 .qe ( ),
127 .q ( staged_q ),
128 .ds ( ),
129 .qs ( )
130 );
131
132 // The shadow register:
133 // - Holds the 1's complement value.
134 // - Written in Phase 1.
135 // - Writes are ignored in case of update errors.
136 // - Gets the value from the staged register.
137 // - Once storage error occurs, do not allow any further update until reset
138 1/1 assign shadow_we = we & phase_q & ~err_update & ~err_storage;
Tests: T1 T2 T3
139 unreachable assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140 prim_subreg #(
141 .DW ( DW ),
142 .SwAccess ( InvertedSwAccess ),
143 .RESVAL ( ~RESVAL )
144 ) shadow_reg (
145 .clk_i ( clk_i ),
146 .rst_ni ( rst_shadowed_ni ),
147 .we ( shadow_we ),
148 .wd ( staged_q ),
149 .de ( shadow_de ),
150 .d ( staged_q ),
151 .qe ( ),
152 .q ( shadow_q ),
153 .ds ( ),
154 .qs ( )
155 );
156
157 // The committed register:
158 // - Written in Phase 1.
159 // - Writes are ignored in case of update errors.
160 1/1 assign committed_we = shadow_we;
Tests: T1 T2 T3
161 unreachable assign committed_de = shadow_de;
162 prim_subreg #(
163 .DW ( DW ),
164 .SwAccess ( SwAccess ),
165 .RESVAL ( RESVAL )
166 ) committed_reg (
167 .clk_i ( clk_i ),
168 .rst_ni ( rst_ni ),
169 .we ( committed_we ),
170 .wd ( wr_data ),
171 .de ( committed_de ),
172 .d ( d ),
173 .qe ( committed_qe ),
174 .q ( committed_q ),
175 .ds ( ds ),
176 .qs ( committed_qs )
177 );
178
179 // Output phase for hwext.
180 1/1 assign phase = phase_q;
Tests: T1 T2 T3
181
182 // Error detection - all bits must match.
183 1/1 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
Tests: T1 T2 T3
184 1/1 assign err_storage = (~shadow_q != committed_q);
Tests: T1 T2 T3
185
186 // Remaining output assignments
187 1/1 assign qe = committed_qe;
Tests: T1 T2 T3
188 1/1 assign q = committed_q;
Tests: T1 T2 T3
189 1/1 assign qs = committed_qs;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
| Total | Covered | Percent |
Conditions | 26 | 25 | 96.15 |
Logical | 26 | 25 | 96.15 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 102
EXPRESSION (wr_en && ((!err_storage)))
--1-- --------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T4,T5,T6 |
1 | 0 | Covered | T71,T72,T73 |
1 | 1 | Covered | T1,T2,T3 |
LINE 104
EXPRESSION (phase_clear || err_storage)
-----1----- -----2-----
-1- | -2- | Status | Tests |
0 | 0 | Covered | T4,T5,T6 |
0 | 1 | Covered | T71,T72,T73 |
1 | 0 | Covered | T12,T13,T30 |
LINE 113
EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | Covered | T71,T72,T73 |
1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 114
EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Unreachable | |
1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | Unreachable | |
LINE 138
EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | 1 | Covered | T71,T73,T74 |
1 | 1 | 1 | 0 | Not Covered | |
1 | 1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 139
EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Unreachable | |
1 | 1 | 0 | 1 | Unreachable | |
1 | 1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | 1 | Unreachable | |
LINE 183
EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION ((~staged_q) != wr_data)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION (phase_q & wr_en)
---1--- --2--
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T71,T73,T74 |
LINE 184
EXPRESSION ((~shadow_q) != committed_q)
--------------1-------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T71,T72,T73 |
Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
| Line No. | Total | Covered | Percent |
Branches |
|
6 |
6 |
100.00 |
TERNARY |
183 |
2 |
2 |
100.00 |
IF |
100 |
4 |
4 |
100.00 |
183 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T1,T2,T3 |
100 if (!rst_ni) begin
-1-
101 phase_q <= 1'b0;
==>
102 end else if (wr_en && !err_storage) begin
-2-
103 phase_q <= ~phase_q;
==>
104 end else if (phase_clear || err_storage) begin
-3-
105 phase_q <= 1'b0;
==>
106 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | Status | Tests |
1 |
- |
- |
Covered |
T4,T5,T6 |
0 |
1 |
- |
Covered |
T1,T2,T3 |
0 |
0 |
1 |
Covered |
T12,T13,T30 |
0 |
0 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
Assertion Details
CheckSwAccessIsLegal_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
MubiIsNotYetSupported_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34075430 |
32957398 |
0 |
0 |
T4 |
820 |
799 |
0 |
0 |
T5 |
2062 |
2000 |
0 |
0 |
T6 |
750 |
736 |
0 |
0 |
T32 |
2561 |
2492 |
0 |
0 |
T33 |
626 |
605 |
0 |
0 |
T34 |
1023 |
975 |
0 |
0 |
T35 |
3300 |
3245 |
0 |
0 |
T36 |
3339 |
3291 |
0 |
0 |
T37 |
18835 |
18814 |
0 |
0 |
T38 |
27648 |
27620 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
| Line No. | Total | Covered | Percent |
TOTAL | | 16 | 16 | 100.00 |
CONT_ASSIGN | 94 | 1 | 1 | 100.00 |
ALWAYS | 100 | 6 | 6 | 100.00 |
CONT_ASSIGN | 113 | 1 | 1 | 100.00 |
CONT_ASSIGN | 114 | 0 | 0 | |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 0 | 0 | |
CONT_ASSIGN | 160 | 1 | 1 | 100.00 |
CONT_ASSIGN | 161 | 0 | 0 | |
CONT_ASSIGN | 180 | 1 | 1 | 100.00 |
CONT_ASSIGN | 183 | 1 | 1 | 100.00 |
CONT_ASSIGN | 184 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 188 | 1 | 1 | 100.00 |
CONT_ASSIGN | 189 | 1 | 1 | 100.00 |
93 // - In case of RO, SW should not interfere with update process.
94 1/1 assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
Tests: T12 T13 T30
95
96 // Phase tracker:
97 // - Reads from SW clear the phase back to 0.
98 // - Writes have priority (can come from SW or HW).
99 always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100 1/1 if (!rst_ni) begin
Tests: T4 T5 T6
101 1/1 phase_q <= 1'b0;
Tests: T4 T5 T6
102 1/1 end else if (wr_en && !err_storage) begin
Tests: T4 T5 T6
103 1/1 phase_q <= ~phase_q;
Tests: T1 T2 T3
104 1/1 end else if (phase_clear || err_storage) begin
Tests: T4 T5 T6
105 1/1 phase_q <= 1'b0;
Tests: T12 T13 T30
106 end
MISSING_ELSE
107 end
108
109 // The staged register:
110 // - Holds the 1's complement value.
111 // - Written in Phase 0.
112 // - Once storage error occurs, do not allow any further update until reset
113 1/1 assign staged_we = we & ~phase_q & ~err_storage;
Tests: T1 T2 T3
114 unreachable assign staged_de = de & ~phase_q & ~err_storage;
115 prim_subreg #(
116 .DW ( DW ),
117 .SwAccess ( StagedSwAccess ),
118 .RESVAL ( ~RESVAL )
119 ) staged_reg (
120 .clk_i ( clk_i ),
121 .rst_ni ( rst_ni ),
122 .we ( staged_we ),
123 .wd ( ~wr_data ),
124 .de ( staged_de ),
125 .d ( ~d ),
126 .qe ( ),
127 .q ( staged_q ),
128 .ds ( ),
129 .qs ( )
130 );
131
132 // The shadow register:
133 // - Holds the 1's complement value.
134 // - Written in Phase 1.
135 // - Writes are ignored in case of update errors.
136 // - Gets the value from the staged register.
137 // - Once storage error occurs, do not allow any further update until reset
138 1/1 assign shadow_we = we & phase_q & ~err_update & ~err_storage;
Tests: T1 T2 T3
139 unreachable assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140 prim_subreg #(
141 .DW ( DW ),
142 .SwAccess ( InvertedSwAccess ),
143 .RESVAL ( ~RESVAL )
144 ) shadow_reg (
145 .clk_i ( clk_i ),
146 .rst_ni ( rst_shadowed_ni ),
147 .we ( shadow_we ),
148 .wd ( staged_q ),
149 .de ( shadow_de ),
150 .d ( staged_q ),
151 .qe ( ),
152 .q ( shadow_q ),
153 .ds ( ),
154 .qs ( )
155 );
156
157 // The committed register:
158 // - Written in Phase 1.
159 // - Writes are ignored in case of update errors.
160 1/1 assign committed_we = shadow_we;
Tests: T1 T2 T3
161 unreachable assign committed_de = shadow_de;
162 prim_subreg #(
163 .DW ( DW ),
164 .SwAccess ( SwAccess ),
165 .RESVAL ( RESVAL )
166 ) committed_reg (
167 .clk_i ( clk_i ),
168 .rst_ni ( rst_ni ),
169 .we ( committed_we ),
170 .wd ( wr_data ),
171 .de ( committed_de ),
172 .d ( d ),
173 .qe ( committed_qe ),
174 .q ( committed_q ),
175 .ds ( ds ),
176 .qs ( committed_qs )
177 );
178
179 // Output phase for hwext.
180 1/1 assign phase = phase_q;
Tests: T1 T2 T3
181
182 // Error detection - all bits must match.
183 1/1 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
Tests: T1 T2 T3
184 1/1 assign err_storage = (~shadow_q != committed_q);
Tests: T1 T2 T3
185
186 // Remaining output assignments
187 1/1 assign qe = committed_qe;
Tests: T1 T2 T3
188 1/1 assign q = committed_q;
Tests: T1 T2 T3
189 1/1 assign qs = committed_qs;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
| Total | Covered | Percent |
Conditions | 26 | 25 | 96.15 |
Logical | 26 | 25 | 96.15 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 102
EXPRESSION (wr_en && ((!err_storage)))
--1-- --------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T4,T5,T6 |
1 | 0 | Covered | T71,T72,T78 |
1 | 1 | Covered | T1,T2,T3 |
LINE 104
EXPRESSION (phase_clear || err_storage)
-----1----- -----2-----
-1- | -2- | Status | Tests |
0 | 0 | Covered | T4,T5,T6 |
0 | 1 | Covered | T71,T72,T73 |
1 | 0 | Covered | T12,T13,T30 |
LINE 113
EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | Covered | T71,T72,T78 |
1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 114
EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Unreachable | |
1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | Unreachable | |
LINE 138
EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | 1 | Covered | T72,T73,T74 |
1 | 1 | 1 | 0 | Not Covered | |
1 | 1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 139
EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Unreachable | |
1 | 1 | 0 | 1 | Unreachable | |
1 | 1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | 1 | Unreachable | |
LINE 183
EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION ((~staged_q) != wr_data)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION (phase_q & wr_en)
---1--- --2--
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T72,T73,T74 |
LINE 184
EXPRESSION ((~shadow_q) != committed_q)
--------------1-------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T71,T72,T73 |
Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
| Line No. | Total | Covered | Percent |
Branches |
|
6 |
6 |
100.00 |
TERNARY |
183 |
2 |
2 |
100.00 |
IF |
100 |
4 |
4 |
100.00 |
183 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T1,T2,T3 |
100 if (!rst_ni) begin
-1-
101 phase_q <= 1'b0;
==>
102 end else if (wr_en && !err_storage) begin
-2-
103 phase_q <= ~phase_q;
==>
104 end else if (phase_clear || err_storage) begin
-3-
105 phase_q <= 1'b0;
==>
106 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | Status | Tests |
1 |
- |
- |
Covered |
T4,T5,T6 |
0 |
1 |
- |
Covered |
T1,T2,T3 |
0 |
0 |
1 |
Covered |
T12,T13,T30 |
0 |
0 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
Assertion Details
CheckSwAccessIsLegal_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
MubiIsNotYetSupported_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
17037310 |
16478383 |
0 |
0 |
T4 |
410 |
400 |
0 |
0 |
T5 |
1031 |
1000 |
0 |
0 |
T6 |
375 |
368 |
0 |
0 |
T32 |
1280 |
1246 |
0 |
0 |
T33 |
313 |
303 |
0 |
0 |
T34 |
511 |
487 |
0 |
0 |
T35 |
1649 |
1621 |
0 |
0 |
T36 |
1669 |
1645 |
0 |
0 |
T37 |
9416 |
9406 |
0 |
0 |
T38 |
13824 |
13810 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
| Line No. | Total | Covered | Percent |
TOTAL | | 16 | 16 | 100.00 |
CONT_ASSIGN | 94 | 1 | 1 | 100.00 |
ALWAYS | 100 | 6 | 6 | 100.00 |
CONT_ASSIGN | 113 | 1 | 1 | 100.00 |
CONT_ASSIGN | 114 | 0 | 0 | |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 0 | 0 | |
CONT_ASSIGN | 160 | 1 | 1 | 100.00 |
CONT_ASSIGN | 161 | 0 | 0 | |
CONT_ASSIGN | 180 | 1 | 1 | 100.00 |
CONT_ASSIGN | 183 | 1 | 1 | 100.00 |
CONT_ASSIGN | 184 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 188 | 1 | 1 | 100.00 |
CONT_ASSIGN | 189 | 1 | 1 | 100.00 |
93 // - In case of RO, SW should not interfere with update process.
94 1/1 assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
Tests: T12 T13 T30
95
96 // Phase tracker:
97 // - Reads from SW clear the phase back to 0.
98 // - Writes have priority (can come from SW or HW).
99 always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100 1/1 if (!rst_ni) begin
Tests: T4 T5 T6
101 1/1 phase_q <= 1'b0;
Tests: T4 T5 T6
102 1/1 end else if (wr_en && !err_storage) begin
Tests: T4 T5 T6
103 1/1 phase_q <= ~phase_q;
Tests: T1 T2 T3
104 1/1 end else if (phase_clear || err_storage) begin
Tests: T4 T5 T6
105 1/1 phase_q <= 1'b0;
Tests: T12 T13 T30
106 end
MISSING_ELSE
107 end
108
109 // The staged register:
110 // - Holds the 1's complement value.
111 // - Written in Phase 0.
112 // - Once storage error occurs, do not allow any further update until reset
113 1/1 assign staged_we = we & ~phase_q & ~err_storage;
Tests: T1 T2 T3
114 unreachable assign staged_de = de & ~phase_q & ~err_storage;
115 prim_subreg #(
116 .DW ( DW ),
117 .SwAccess ( StagedSwAccess ),
118 .RESVAL ( ~RESVAL )
119 ) staged_reg (
120 .clk_i ( clk_i ),
121 .rst_ni ( rst_ni ),
122 .we ( staged_we ),
123 .wd ( ~wr_data ),
124 .de ( staged_de ),
125 .d ( ~d ),
126 .qe ( ),
127 .q ( staged_q ),
128 .ds ( ),
129 .qs ( )
130 );
131
132 // The shadow register:
133 // - Holds the 1's complement value.
134 // - Written in Phase 1.
135 // - Writes are ignored in case of update errors.
136 // - Gets the value from the staged register.
137 // - Once storage error occurs, do not allow any further update until reset
138 1/1 assign shadow_we = we & phase_q & ~err_update & ~err_storage;
Tests: T1 T2 T3
139 unreachable assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140 prim_subreg #(
141 .DW ( DW ),
142 .SwAccess ( InvertedSwAccess ),
143 .RESVAL ( ~RESVAL )
144 ) shadow_reg (
145 .clk_i ( clk_i ),
146 .rst_ni ( rst_shadowed_ni ),
147 .we ( shadow_we ),
148 .wd ( staged_q ),
149 .de ( shadow_de ),
150 .d ( staged_q ),
151 .qe ( ),
152 .q ( shadow_q ),
153 .ds ( ),
154 .qs ( )
155 );
156
157 // The committed register:
158 // - Written in Phase 1.
159 // - Writes are ignored in case of update errors.
160 1/1 assign committed_we = shadow_we;
Tests: T1 T2 T3
161 unreachable assign committed_de = shadow_de;
162 prim_subreg #(
163 .DW ( DW ),
164 .SwAccess ( SwAccess ),
165 .RESVAL ( RESVAL )
166 ) committed_reg (
167 .clk_i ( clk_i ),
168 .rst_ni ( rst_ni ),
169 .we ( committed_we ),
170 .wd ( wr_data ),
171 .de ( committed_de ),
172 .d ( d ),
173 .qe ( committed_qe ),
174 .q ( committed_q ),
175 .ds ( ds ),
176 .qs ( committed_qs )
177 );
178
179 // Output phase for hwext.
180 1/1 assign phase = phase_q;
Tests: T1 T2 T3
181
182 // Error detection - all bits must match.
183 1/1 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
Tests: T1 T2 T3
184 1/1 assign err_storage = (~shadow_q != committed_q);
Tests: T1 T2 T3
185
186 // Remaining output assignments
187 1/1 assign qe = committed_qe;
Tests: T1 T2 T3
188 1/1 assign q = committed_q;
Tests: T1 T2 T3
189 1/1 assign qs = committed_qs;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
| Total | Covered | Percent |
Conditions | 26 | 25 | 96.15 |
Logical | 26 | 25 | 96.15 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 102
EXPRESSION (wr_en && ((!err_storage)))
--1-- --------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T4,T5,T6 |
1 | 0 | Covered | T71,T72,T79 |
1 | 1 | Covered | T1,T2,T3 |
LINE 104
EXPRESSION (phase_clear || err_storage)
-----1----- -----2-----
-1- | -2- | Status | Tests |
0 | 0 | Covered | T4,T5,T6 |
0 | 1 | Covered | T71,T72,T73 |
1 | 0 | Covered | T12,T13,T30 |
LINE 113
EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | Covered | T71,T72,T79 |
1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 114
EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Unreachable | |
1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | Unreachable | |
LINE 138
EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | 1 | Covered | T72,T77,T74 |
1 | 1 | 1 | 0 | Not Covered | |
1 | 1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 139
EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Unreachable | |
1 | 1 | 0 | 1 | Unreachable | |
1 | 1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | 1 | Unreachable | |
LINE 183
EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION ((~staged_q) != wr_data)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION (phase_q & wr_en)
---1--- --2--
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T72,T77,T74 |
LINE 184
EXPRESSION ((~shadow_q) != committed_q)
--------------1-------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T71,T72,T73 |
Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
| Line No. | Total | Covered | Percent |
Branches |
|
6 |
6 |
100.00 |
TERNARY |
183 |
2 |
2 |
100.00 |
IF |
100 |
4 |
4 |
100.00 |
183 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T1,T2,T3 |
100 if (!rst_ni) begin
-1-
101 phase_q <= 1'b0;
==>
102 end else if (wr_en && !err_storage) begin
-2-
103 phase_q <= ~phase_q;
==>
104 end else if (phase_clear || err_storage) begin
-3-
105 phase_q <= 1'b0;
==>
106 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | Status | Tests |
1 |
- |
- |
Covered |
T4,T5,T6 |
0 |
1 |
- |
Covered |
T1,T2,T3 |
0 |
0 |
1 |
Covered |
T12,T13,T30 |
0 |
0 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
Assertion Details
CheckSwAccessIsLegal_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
MubiIsNotYetSupported_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
17037310 |
16478383 |
0 |
0 |
T4 |
410 |
400 |
0 |
0 |
T5 |
1031 |
1000 |
0 |
0 |
T6 |
375 |
368 |
0 |
0 |
T32 |
1280 |
1246 |
0 |
0 |
T33 |
313 |
303 |
0 |
0 |
T34 |
511 |
487 |
0 |
0 |
T35 |
1649 |
1621 |
0 |
0 |
T36 |
1669 |
1645 |
0 |
0 |
T37 |
9416 |
9406 |
0 |
0 |
T38 |
13824 |
13810 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
| Line No. | Total | Covered | Percent |
TOTAL | | 16 | 16 | 100.00 |
CONT_ASSIGN | 94 | 1 | 1 | 100.00 |
ALWAYS | 100 | 6 | 6 | 100.00 |
CONT_ASSIGN | 113 | 1 | 1 | 100.00 |
CONT_ASSIGN | 114 | 0 | 0 | |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 0 | 0 | |
CONT_ASSIGN | 160 | 1 | 1 | 100.00 |
CONT_ASSIGN | 161 | 0 | 0 | |
CONT_ASSIGN | 180 | 1 | 1 | 100.00 |
CONT_ASSIGN | 183 | 1 | 1 | 100.00 |
CONT_ASSIGN | 184 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 188 | 1 | 1 | 100.00 |
CONT_ASSIGN | 189 | 1 | 1 | 100.00 |
93 // - In case of RO, SW should not interfere with update process.
94 1/1 assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
Tests: T12 T13 T30
95
96 // Phase tracker:
97 // - Reads from SW clear the phase back to 0.
98 // - Writes have priority (can come from SW or HW).
99 always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100 1/1 if (!rst_ni) begin
Tests: T4 T5 T6
101 1/1 phase_q <= 1'b0;
Tests: T4 T5 T6
102 1/1 end else if (wr_en && !err_storage) begin
Tests: T4 T5 T6
103 1/1 phase_q <= ~phase_q;
Tests: T1 T2 T3
104 1/1 end else if (phase_clear || err_storage) begin
Tests: T4 T5 T6
105 1/1 phase_q <= 1'b0;
Tests: T12 T13 T30
106 end
MISSING_ELSE
107 end
108
109 // The staged register:
110 // - Holds the 1's complement value.
111 // - Written in Phase 0.
112 // - Once storage error occurs, do not allow any further update until reset
113 1/1 assign staged_we = we & ~phase_q & ~err_storage;
Tests: T1 T2 T3
114 unreachable assign staged_de = de & ~phase_q & ~err_storage;
115 prim_subreg #(
116 .DW ( DW ),
117 .SwAccess ( StagedSwAccess ),
118 .RESVAL ( ~RESVAL )
119 ) staged_reg (
120 .clk_i ( clk_i ),
121 .rst_ni ( rst_ni ),
122 .we ( staged_we ),
123 .wd ( ~wr_data ),
124 .de ( staged_de ),
125 .d ( ~d ),
126 .qe ( ),
127 .q ( staged_q ),
128 .ds ( ),
129 .qs ( )
130 );
131
132 // The shadow register:
133 // - Holds the 1's complement value.
134 // - Written in Phase 1.
135 // - Writes are ignored in case of update errors.
136 // - Gets the value from the staged register.
137 // - Once storage error occurs, do not allow any further update until reset
138 1/1 assign shadow_we = we & phase_q & ~err_update & ~err_storage;
Tests: T1 T2 T3
139 unreachable assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140 prim_subreg #(
141 .DW ( DW ),
142 .SwAccess ( InvertedSwAccess ),
143 .RESVAL ( ~RESVAL )
144 ) shadow_reg (
145 .clk_i ( clk_i ),
146 .rst_ni ( rst_shadowed_ni ),
147 .we ( shadow_we ),
148 .wd ( staged_q ),
149 .de ( shadow_de ),
150 .d ( staged_q ),
151 .qe ( ),
152 .q ( shadow_q ),
153 .ds ( ),
154 .qs ( )
155 );
156
157 // The committed register:
158 // - Written in Phase 1.
159 // - Writes are ignored in case of update errors.
160 1/1 assign committed_we = shadow_we;
Tests: T1 T2 T3
161 unreachable assign committed_de = shadow_de;
162 prim_subreg #(
163 .DW ( DW ),
164 .SwAccess ( SwAccess ),
165 .RESVAL ( RESVAL )
166 ) committed_reg (
167 .clk_i ( clk_i ),
168 .rst_ni ( rst_ni ),
169 .we ( committed_we ),
170 .wd ( wr_data ),
171 .de ( committed_de ),
172 .d ( d ),
173 .qe ( committed_qe ),
174 .q ( committed_q ),
175 .ds ( ds ),
176 .qs ( committed_qs )
177 );
178
179 // Output phase for hwext.
180 1/1 assign phase = phase_q;
Tests: T1 T2 T3
181
182 // Error detection - all bits must match.
183 1/1 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
Tests: T1 T2 T3
184 1/1 assign err_storage = (~shadow_q != committed_q);
Tests: T1 T2 T3
185
186 // Remaining output assignments
187 1/1 assign qe = committed_qe;
Tests: T1 T2 T3
188 1/1 assign q = committed_q;
Tests: T1 T2 T3
189 1/1 assign qs = committed_qs;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
| Total | Covered | Percent |
Conditions | 26 | 25 | 96.15 |
Logical | 26 | 25 | 96.15 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 102
EXPRESSION (wr_en && ((!err_storage)))
--1-- --------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T4,T5,T6 |
1 | 0 | Covered | T72,T73,T74 |
1 | 1 | Covered | T1,T2,T3 |
LINE 104
EXPRESSION (phase_clear || err_storage)
-----1----- -----2-----
-1- | -2- | Status | Tests |
0 | 0 | Covered | T4,T5,T6 |
0 | 1 | Covered | T71,T72,T73 |
1 | 0 | Covered | T12,T13,T30 |
LINE 113
EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | Covered | T72,T73,T74 |
1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 114
EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Unreachable | |
1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | Unreachable | |
LINE 138
EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | 1 | Covered | T71,T72,T73 |
1 | 1 | 1 | 0 | Not Covered | |
1 | 1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 139
EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Unreachable | |
1 | 1 | 0 | 1 | Unreachable | |
1 | 1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | 1 | Unreachable | |
LINE 183
EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION ((~staged_q) != wr_data)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION (phase_q & wr_en)
---1--- --2--
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T71,T72,T73 |
LINE 184
EXPRESSION ((~shadow_q) != committed_q)
--------------1-------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T71,T72,T73 |
Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
| Line No. | Total | Covered | Percent |
Branches |
|
6 |
6 |
100.00 |
TERNARY |
183 |
2 |
2 |
100.00 |
IF |
100 |
4 |
4 |
100.00 |
183 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T1,T2,T3 |
100 if (!rst_ni) begin
-1-
101 phase_q <= 1'b0;
==>
102 end else if (wr_en && !err_storage) begin
-2-
103 phase_q <= ~phase_q;
==>
104 end else if (phase_clear || err_storage) begin
-3-
105 phase_q <= 1'b0;
==>
106 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | Status | Tests |
1 |
- |
- |
Covered |
T4,T5,T6 |
0 |
1 |
- |
Covered |
T1,T2,T3 |
0 |
0 |
1 |
Covered |
T12,T13,T30 |
0 |
0 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
Assertion Details
CheckSwAccessIsLegal_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
MubiIsNotYetSupported_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78012897 |
73198830 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
| Line No. | Total | Covered | Percent |
TOTAL | | 16 | 16 | 100.00 |
CONT_ASSIGN | 94 | 1 | 1 | 100.00 |
ALWAYS | 100 | 6 | 6 | 100.00 |
CONT_ASSIGN | 113 | 1 | 1 | 100.00 |
CONT_ASSIGN | 114 | 0 | 0 | |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 0 | 0 | |
CONT_ASSIGN | 160 | 1 | 1 | 100.00 |
CONT_ASSIGN | 161 | 0 | 0 | |
CONT_ASSIGN | 180 | 1 | 1 | 100.00 |
CONT_ASSIGN | 183 | 1 | 1 | 100.00 |
CONT_ASSIGN | 184 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 188 | 1 | 1 | 100.00 |
CONT_ASSIGN | 189 | 1 | 1 | 100.00 |
93 // - In case of RO, SW should not interfere with update process.
94 1/1 assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
Tests: T12 T13 T30
95
96 // Phase tracker:
97 // - Reads from SW clear the phase back to 0.
98 // - Writes have priority (can come from SW or HW).
99 always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100 1/1 if (!rst_ni) begin
Tests: T4 T5 T6
101 1/1 phase_q <= 1'b0;
Tests: T4 T5 T6
102 1/1 end else if (wr_en && !err_storage) begin
Tests: T4 T5 T6
103 1/1 phase_q <= ~phase_q;
Tests: T1 T2 T3
104 1/1 end else if (phase_clear || err_storage) begin
Tests: T4 T5 T6
105 1/1 phase_q <= 1'b0;
Tests: T12 T13 T30
106 end
MISSING_ELSE
107 end
108
109 // The staged register:
110 // - Holds the 1's complement value.
111 // - Written in Phase 0.
112 // - Once storage error occurs, do not allow any further update until reset
113 1/1 assign staged_we = we & ~phase_q & ~err_storage;
Tests: T1 T2 T3
114 unreachable assign staged_de = de & ~phase_q & ~err_storage;
115 prim_subreg #(
116 .DW ( DW ),
117 .SwAccess ( StagedSwAccess ),
118 .RESVAL ( ~RESVAL )
119 ) staged_reg (
120 .clk_i ( clk_i ),
121 .rst_ni ( rst_ni ),
122 .we ( staged_we ),
123 .wd ( ~wr_data ),
124 .de ( staged_de ),
125 .d ( ~d ),
126 .qe ( ),
127 .q ( staged_q ),
128 .ds ( ),
129 .qs ( )
130 );
131
132 // The shadow register:
133 // - Holds the 1's complement value.
134 // - Written in Phase 1.
135 // - Writes are ignored in case of update errors.
136 // - Gets the value from the staged register.
137 // - Once storage error occurs, do not allow any further update until reset
138 1/1 assign shadow_we = we & phase_q & ~err_update & ~err_storage;
Tests: T1 T2 T3
139 unreachable assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140 prim_subreg #(
141 .DW ( DW ),
142 .SwAccess ( InvertedSwAccess ),
143 .RESVAL ( ~RESVAL )
144 ) shadow_reg (
145 .clk_i ( clk_i ),
146 .rst_ni ( rst_shadowed_ni ),
147 .we ( shadow_we ),
148 .wd ( staged_q ),
149 .de ( shadow_de ),
150 .d ( staged_q ),
151 .qe ( ),
152 .q ( shadow_q ),
153 .ds ( ),
154 .qs ( )
155 );
156
157 // The committed register:
158 // - Written in Phase 1.
159 // - Writes are ignored in case of update errors.
160 1/1 assign committed_we = shadow_we;
Tests: T1 T2 T3
161 unreachable assign committed_de = shadow_de;
162 prim_subreg #(
163 .DW ( DW ),
164 .SwAccess ( SwAccess ),
165 .RESVAL ( RESVAL )
166 ) committed_reg (
167 .clk_i ( clk_i ),
168 .rst_ni ( rst_ni ),
169 .we ( committed_we ),
170 .wd ( wr_data ),
171 .de ( committed_de ),
172 .d ( d ),
173 .qe ( committed_qe ),
174 .q ( committed_q ),
175 .ds ( ds ),
176 .qs ( committed_qs )
177 );
178
179 // Output phase for hwext.
180 1/1 assign phase = phase_q;
Tests: T1 T2 T3
181
182 // Error detection - all bits must match.
183 1/1 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
Tests: T1 T2 T3
184 1/1 assign err_storage = (~shadow_q != committed_q);
Tests: T1 T2 T3
185
186 // Remaining output assignments
187 1/1 assign qe = committed_qe;
Tests: T1 T2 T3
188 1/1 assign q = committed_q;
Tests: T1 T2 T3
189 1/1 assign qs = committed_qs;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
| Total | Covered | Percent |
Conditions | 26 | 25 | 96.15 |
Logical | 26 | 25 | 96.15 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 102
EXPRESSION (wr_en && ((!err_storage)))
--1-- --------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T4,T5,T6 |
1 | 0 | Covered | T72,T73,T74 |
1 | 1 | Covered | T1,T2,T3 |
LINE 104
EXPRESSION (phase_clear || err_storage)
-----1----- -----2-----
-1- | -2- | Status | Tests |
0 | 0 | Covered | T4,T5,T6 |
0 | 1 | Covered | T71,T72,T73 |
1 | 0 | Covered | T12,T13,T30 |
LINE 113
EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | Covered | T72,T73,T74 |
1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 114
EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Unreachable | |
1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | Unreachable | |
LINE 138
EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | 1 | Covered | T71,T72,T73 |
1 | 1 | 1 | 0 | Not Covered | |
1 | 1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 139
EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Unreachable | |
1 | 1 | 0 | 1 | Unreachable | |
1 | 1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | 1 | Unreachable | |
LINE 183
EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION ((~staged_q) != wr_data)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION (phase_q & wr_en)
---1--- --2--
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T71,T72,T73 |
LINE 184
EXPRESSION ((~shadow_q) != committed_q)
--------------1-------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T71,T72,T73 |
Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
| Line No. | Total | Covered | Percent |
Branches |
|
6 |
6 |
100.00 |
TERNARY |
183 |
2 |
2 |
100.00 |
IF |
100 |
4 |
4 |
100.00 |
183 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T1,T2,T3 |
100 if (!rst_ni) begin
-1-
101 phase_q <= 1'b0;
==>
102 end else if (wr_en && !err_storage) begin
-2-
103 phase_q <= ~phase_q;
==>
104 end else if (phase_clear || err_storage) begin
-3-
105 phase_q <= 1'b0;
==>
106 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | Status | Tests |
1 |
- |
- |
Covered |
T4,T5,T6 |
0 |
1 |
- |
Covered |
T1,T2,T3 |
0 |
0 |
1 |
Covered |
T12,T13,T30 |
0 |
0 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
Assertion Details
CheckSwAccessIsLegal_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
MubiIsNotYetSupported_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78012897 |
73198830 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
| Line No. | Total | Covered | Percent |
TOTAL | | 16 | 16 | 100.00 |
CONT_ASSIGN | 94 | 1 | 1 | 100.00 |
ALWAYS | 100 | 6 | 6 | 100.00 |
CONT_ASSIGN | 113 | 1 | 1 | 100.00 |
CONT_ASSIGN | 114 | 0 | 0 | |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 0 | 0 | |
CONT_ASSIGN | 160 | 1 | 1 | 100.00 |
CONT_ASSIGN | 161 | 0 | 0 | |
CONT_ASSIGN | 180 | 1 | 1 | 100.00 |
CONT_ASSIGN | 183 | 1 | 1 | 100.00 |
CONT_ASSIGN | 184 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 188 | 1 | 1 | 100.00 |
CONT_ASSIGN | 189 | 1 | 1 | 100.00 |
93 // - In case of RO, SW should not interfere with update process.
94 1/1 assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
Tests: T12 T13 T30
95
96 // Phase tracker:
97 // - Reads from SW clear the phase back to 0.
98 // - Writes have priority (can come from SW or HW).
99 always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100 1/1 if (!rst_ni) begin
Tests: T4 T5 T6
101 1/1 phase_q <= 1'b0;
Tests: T4 T5 T6
102 1/1 end else if (wr_en && !err_storage) begin
Tests: T4 T5 T6
103 1/1 phase_q <= ~phase_q;
Tests: T1 T2 T3
104 1/1 end else if (phase_clear || err_storage) begin
Tests: T4 T5 T6
105 1/1 phase_q <= 1'b0;
Tests: T12 T13 T30
106 end
MISSING_ELSE
107 end
108
109 // The staged register:
110 // - Holds the 1's complement value.
111 // - Written in Phase 0.
112 // - Once storage error occurs, do not allow any further update until reset
113 1/1 assign staged_we = we & ~phase_q & ~err_storage;
Tests: T1 T2 T3
114 unreachable assign staged_de = de & ~phase_q & ~err_storage;
115 prim_subreg #(
116 .DW ( DW ),
117 .SwAccess ( StagedSwAccess ),
118 .RESVAL ( ~RESVAL )
119 ) staged_reg (
120 .clk_i ( clk_i ),
121 .rst_ni ( rst_ni ),
122 .we ( staged_we ),
123 .wd ( ~wr_data ),
124 .de ( staged_de ),
125 .d ( ~d ),
126 .qe ( ),
127 .q ( staged_q ),
128 .ds ( ),
129 .qs ( )
130 );
131
132 // The shadow register:
133 // - Holds the 1's complement value.
134 // - Written in Phase 1.
135 // - Writes are ignored in case of update errors.
136 // - Gets the value from the staged register.
137 // - Once storage error occurs, do not allow any further update until reset
138 1/1 assign shadow_we = we & phase_q & ~err_update & ~err_storage;
Tests: T1 T2 T3
139 unreachable assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140 prim_subreg #(
141 .DW ( DW ),
142 .SwAccess ( InvertedSwAccess ),
143 .RESVAL ( ~RESVAL )
144 ) shadow_reg (
145 .clk_i ( clk_i ),
146 .rst_ni ( rst_shadowed_ni ),
147 .we ( shadow_we ),
148 .wd ( staged_q ),
149 .de ( shadow_de ),
150 .d ( staged_q ),
151 .qe ( ),
152 .q ( shadow_q ),
153 .ds ( ),
154 .qs ( )
155 );
156
157 // The committed register:
158 // - Written in Phase 1.
159 // - Writes are ignored in case of update errors.
160 1/1 assign committed_we = shadow_we;
Tests: T1 T2 T3
161 unreachable assign committed_de = shadow_de;
162 prim_subreg #(
163 .DW ( DW ),
164 .SwAccess ( SwAccess ),
165 .RESVAL ( RESVAL )
166 ) committed_reg (
167 .clk_i ( clk_i ),
168 .rst_ni ( rst_ni ),
169 .we ( committed_we ),
170 .wd ( wr_data ),
171 .de ( committed_de ),
172 .d ( d ),
173 .qe ( committed_qe ),
174 .q ( committed_q ),
175 .ds ( ds ),
176 .qs ( committed_qs )
177 );
178
179 // Output phase for hwext.
180 1/1 assign phase = phase_q;
Tests: T1 T2 T3
181
182 // Error detection - all bits must match.
183 1/1 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
Tests: T1 T2 T3
184 1/1 assign err_storage = (~shadow_q != committed_q);
Tests: T1 T2 T3
185
186 // Remaining output assignments
187 1/1 assign qe = committed_qe;
Tests: T1 T2 T3
188 1/1 assign q = committed_q;
Tests: T1 T2 T3
189 1/1 assign qs = committed_qs;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
| Total | Covered | Percent |
Conditions | 26 | 25 | 96.15 |
Logical | 26 | 25 | 96.15 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 102
EXPRESSION (wr_en && ((!err_storage)))
--1-- --------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T4,T5,T6 |
1 | 0 | Covered | T71,T73,T76 |
1 | 1 | Covered | T1,T2,T3 |
LINE 104
EXPRESSION (phase_clear || err_storage)
-----1----- -----2-----
-1- | -2- | Status | Tests |
0 | 0 | Covered | T4,T5,T6 |
0 | 1 | Covered | T71,T72,T73 |
1 | 0 | Covered | T12,T13,T30 |
LINE 113
EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | Covered | T71,T73,T76 |
1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 114
EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Unreachable | |
1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | Unreachable | |
LINE 138
EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | 1 | Covered | T73,T75,T76 |
1 | 1 | 1 | 0 | Not Covered | |
1 | 1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 139
EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Unreachable | |
1 | 1 | 0 | 1 | Unreachable | |
1 | 1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | 1 | Unreachable | |
LINE 183
EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION ((~staged_q) != wr_data)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION (phase_q & wr_en)
---1--- --2--
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T73,T75,T76 |
LINE 184
EXPRESSION ((~shadow_q) != committed_q)
--------------1-------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T71,T72,T73 |
Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
| Line No. | Total | Covered | Percent |
Branches |
|
6 |
6 |
100.00 |
TERNARY |
183 |
2 |
2 |
100.00 |
IF |
100 |
4 |
4 |
100.00 |
183 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T1,T2,T3 |
100 if (!rst_ni) begin
-1-
101 phase_q <= 1'b0;
==>
102 end else if (wr_en && !err_storage) begin
-2-
103 phase_q <= ~phase_q;
==>
104 end else if (phase_clear || err_storage) begin
-3-
105 phase_q <= 1'b0;
==>
106 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | Status | Tests |
1 |
- |
- |
Covered |
T4,T5,T6 |
0 |
1 |
- |
Covered |
T1,T2,T3 |
0 |
0 |
1 |
Covered |
T12,T13,T30 |
0 |
0 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
Assertion Details
CheckSwAccessIsLegal_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
MubiIsNotYetSupported_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
37309282 |
35013041 |
0 |
0 |
T4 |
739 |
700 |
0 |
0 |
T5 |
2074 |
2000 |
0 |
0 |
T6 |
817 |
736 |
0 |
0 |
T32 |
2573 |
2492 |
0 |
0 |
T33 |
682 |
601 |
0 |
0 |
T34 |
1030 |
929 |
0 |
0 |
T35 |
3094 |
2979 |
0 |
0 |
T36 |
2986 |
2878 |
0 |
0 |
T37 |
17639 |
17599 |
0 |
0 |
T38 |
27702 |
27622 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
| Line No. | Total | Covered | Percent |
TOTAL | | 16 | 16 | 100.00 |
CONT_ASSIGN | 94 | 1 | 1 | 100.00 |
ALWAYS | 100 | 6 | 6 | 100.00 |
CONT_ASSIGN | 113 | 1 | 1 | 100.00 |
CONT_ASSIGN | 114 | 0 | 0 | |
CONT_ASSIGN | 138 | 1 | 1 | 100.00 |
CONT_ASSIGN | 139 | 0 | 0 | |
CONT_ASSIGN | 160 | 1 | 1 | 100.00 |
CONT_ASSIGN | 161 | 0 | 0 | |
CONT_ASSIGN | 180 | 1 | 1 | 100.00 |
CONT_ASSIGN | 183 | 1 | 1 | 100.00 |
CONT_ASSIGN | 184 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 188 | 1 | 1 | 100.00 |
CONT_ASSIGN | 189 | 1 | 1 | 100.00 |
93 // - In case of RO, SW should not interfere with update process.
94 1/1 assign phase_clear = (SwAccess == SwAccessRO) ? 1'b0 : re;
Tests: T12 T13 T30
95
96 // Phase tracker:
97 // - Reads from SW clear the phase back to 0.
98 // - Writes have priority (can come from SW or HW).
99 always_ff @(posedge clk_i or negedge rst_ni) begin : phase_reg
100 1/1 if (!rst_ni) begin
Tests: T4 T5 T6
101 1/1 phase_q <= 1'b0;
Tests: T4 T5 T6
102 1/1 end else if (wr_en && !err_storage) begin
Tests: T4 T5 T6
103 1/1 phase_q <= ~phase_q;
Tests: T1 T2 T3
104 1/1 end else if (phase_clear || err_storage) begin
Tests: T4 T5 T6
105 1/1 phase_q <= 1'b0;
Tests: T12 T13 T30
106 end
MISSING_ELSE
107 end
108
109 // The staged register:
110 // - Holds the 1's complement value.
111 // - Written in Phase 0.
112 // - Once storage error occurs, do not allow any further update until reset
113 1/1 assign staged_we = we & ~phase_q & ~err_storage;
Tests: T1 T2 T3
114 unreachable assign staged_de = de & ~phase_q & ~err_storage;
115 prim_subreg #(
116 .DW ( DW ),
117 .SwAccess ( StagedSwAccess ),
118 .RESVAL ( ~RESVAL )
119 ) staged_reg (
120 .clk_i ( clk_i ),
121 .rst_ni ( rst_ni ),
122 .we ( staged_we ),
123 .wd ( ~wr_data ),
124 .de ( staged_de ),
125 .d ( ~d ),
126 .qe ( ),
127 .q ( staged_q ),
128 .ds ( ),
129 .qs ( )
130 );
131
132 // The shadow register:
133 // - Holds the 1's complement value.
134 // - Written in Phase 1.
135 // - Writes are ignored in case of update errors.
136 // - Gets the value from the staged register.
137 // - Once storage error occurs, do not allow any further update until reset
138 1/1 assign shadow_we = we & phase_q & ~err_update & ~err_storage;
Tests: T1 T2 T3
139 unreachable assign shadow_de = de & phase_q & ~err_update & ~err_storage;
140 prim_subreg #(
141 .DW ( DW ),
142 .SwAccess ( InvertedSwAccess ),
143 .RESVAL ( ~RESVAL )
144 ) shadow_reg (
145 .clk_i ( clk_i ),
146 .rst_ni ( rst_shadowed_ni ),
147 .we ( shadow_we ),
148 .wd ( staged_q ),
149 .de ( shadow_de ),
150 .d ( staged_q ),
151 .qe ( ),
152 .q ( shadow_q ),
153 .ds ( ),
154 .qs ( )
155 );
156
157 // The committed register:
158 // - Written in Phase 1.
159 // - Writes are ignored in case of update errors.
160 1/1 assign committed_we = shadow_we;
Tests: T1 T2 T3
161 unreachable assign committed_de = shadow_de;
162 prim_subreg #(
163 .DW ( DW ),
164 .SwAccess ( SwAccess ),
165 .RESVAL ( RESVAL )
166 ) committed_reg (
167 .clk_i ( clk_i ),
168 .rst_ni ( rst_ni ),
169 .we ( committed_we ),
170 .wd ( wr_data ),
171 .de ( committed_de ),
172 .d ( d ),
173 .qe ( committed_qe ),
174 .q ( committed_q ),
175 .ds ( ds ),
176 .qs ( committed_qs )
177 );
178
179 // Output phase for hwext.
180 1/1 assign phase = phase_q;
Tests: T1 T2 T3
181
182 // Error detection - all bits must match.
183 1/1 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
Tests: T1 T2 T3
184 1/1 assign err_storage = (~shadow_q != committed_q);
Tests: T1 T2 T3
185
186 // Remaining output assignments
187 1/1 assign qe = committed_qe;
Tests: T1 T2 T3
188 1/1 assign q = committed_q;
Tests: T1 T2 T3
189 1/1 assign qs = committed_qs;
Tests: T1 T2 T3
Cond Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
| Total | Covered | Percent |
Conditions | 26 | 25 | 96.15 |
Logical | 26 | 25 | 96.15 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 102
EXPRESSION (wr_en && ((!err_storage)))
--1-- --------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T4,T5,T6 |
1 | 0 | Covered | T71,T76,T80 |
1 | 1 | Covered | T1,T2,T3 |
LINE 104
EXPRESSION (phase_clear || err_storage)
-----1----- -----2-----
-1- | -2- | Status | Tests |
0 | 0 | Covered | T4,T5,T6 |
0 | 1 | Covered | T71,T72,T73 |
1 | 0 | Covered | T12,T13,T30 |
LINE 113
EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | Covered | T71,T76,T80 |
1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 114
EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
-1 ------2----- --------3-------
-1- | -2- | -3- | Status | Tests |
0 | 1 | 1 | Covered | T4,T5,T6 |
1 | 0 | 1 | Unreachable | |
1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | Unreachable | |
LINE 138
EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Covered | T1,T2,T3 |
1 | 1 | 0 | 1 | Covered | T71,T72,T73 |
1 | 1 | 1 | 0 | Not Covered | |
1 | 1 | 1 | 1 | Covered | T1,T2,T3 |
LINE 139
EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
-1 ---2--- -------3------- --------4-------
-1- | -2- | -3- | -4- | Status | Tests |
0 | 1 | 1 | 1 | Covered | T1,T2,T3 |
1 | 0 | 1 | 1 | Unreachable | |
1 | 1 | 0 | 1 | Unreachable | |
1 | 1 | 1 | 0 | Unreachable | |
1 | 1 | 1 | 1 | Unreachable | |
LINE 183
EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION ((~staged_q) != wr_data)
------------1-----------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T4,T5,T6 |
LINE 183
SUB-EXPRESSION (phase_q & wr_en)
---1--- --2--
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
1 | 1 | Covered | T71,T72,T73 |
LINE 184
EXPRESSION ((~shadow_q) != committed_q)
--------------1-------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T71,T72,T73 |
Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
| Line No. | Total | Covered | Percent |
Branches |
|
6 |
6 |
100.00 |
TERNARY |
183 |
2 |
2 |
100.00 |
IF |
100 |
4 |
4 |
100.00 |
183 assign err_update = (~staged_q != wr_data) ? phase_q & wr_en : 1'b0;
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T1,T2,T3 |
100 if (!rst_ni) begin
-1-
101 phase_q <= 1'b0;
==>
102 end else if (wr_en && !err_storage) begin
-2-
103 phase_q <= ~phase_q;
==>
104 end else if (phase_clear || err_storage) begin
-3-
105 phase_q <= 1'b0;
==>
106 end
MISSING_ELSE
==>
Branches:
-1- | -2- | -3- | Status | Tests |
1 |
- |
- |
Covered |
T4,T5,T6 |
0 |
1 |
- |
Covered |
T1,T2,T3 |
0 |
0 |
1 |
Covered |
T12,T13,T30 |
0 |
0 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
Assertion Details
CheckSwAccessIsLegal_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
MubiIsNotYetSupported_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
37309282 |
35013041 |
0 |
0 |
T4 |
739 |
700 |
0 |
0 |
T5 |
2074 |
2000 |
0 |
0 |
T6 |
817 |
736 |
0 |
0 |
T32 |
2573 |
2492 |
0 |
0 |
T33 |
682 |
601 |
0 |
0 |
T34 |
1030 |
929 |
0 |
0 |
T35 |
3094 |
2979 |
0 |
0 |
T36 |
2986 |
2878 |
0 |
0 |
T37 |
17639 |
17599 |
0 |
0 |
T38 |
27702 |
27622 |
0 |
0 |