Module Definition
dashboard | hierarchy | modlist | groups | tests | asserts



Module Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.04 100.00 96.15 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.55 100.00 98.21 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_reg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
committed_reg 100.00 100.00 100.00 100.00
shadow_reg 100.00 100.00 100.00 100.00
staged_reg 100.00 100.00 100.00 100.00
wr_en_data_arb 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.04 100.00 96.15 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.55 100.00 98.21 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_reg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
committed_reg 100.00 100.00 100.00 100.00
shadow_reg 100.00 100.00 100.00 100.00
staged_reg 100.00 100.00 100.00 100.00
wr_en_data_arb 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.04 100.00 96.15 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.55 100.00 98.21 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_reg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
committed_reg 100.00 100.00 100.00 100.00
shadow_reg 100.00 100.00 100.00 100.00
staged_reg 100.00 100.00 100.00 100.00
wr_en_data_arb 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.04 100.00 96.15 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.55 100.00 98.21 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_reg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
committed_reg 100.00 100.00 100.00 100.00
shadow_reg 100.00 100.00 100.00 100.00
staged_reg 100.00 100.00 100.00 100.00
wr_en_data_arb 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.04 100.00 96.15 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.55 100.00 98.21 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_reg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
committed_reg 100.00 100.00 100.00 100.00
shadow_reg 100.00 100.00 100.00 100.00
staged_reg 100.00 100.00 100.00 100.00
wr_en_data_arb 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.04 100.00 96.15 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.55 100.00 98.21 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_reg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
committed_reg 100.00 100.00 100.00 100.00
shadow_reg 100.00 100.00 100.00 100.00
staged_reg 100.00 100.00 100.00 100.00
wr_en_data_arb 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.04 100.00 96.15 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.55 100.00 98.21 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_reg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
committed_reg 100.00 100.00 100.00 100.00
shadow_reg 100.00 100.00 100.00 100.00
staged_reg 100.00 100.00 100.00 100.00
wr_en_data_arb 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.04 100.00 96.15 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.55 100.00 98.21 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_reg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
committed_reg 100.00 100.00 100.00 100.00
shadow_reg 100.00 100.00 100.00 100.00
staged_reg 100.00 100.00 100.00 100.00
wr_en_data_arb 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.04 100.00 96.15 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.55 100.00 98.21 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_reg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
committed_reg 100.00 100.00 100.00 100.00
shadow_reg 100.00 100.00 100.00 100.00
staged_reg 100.00 100.00 100.00 100.00
wr_en_data_arb 100.00 100.00 100.00 100.00



Module Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.04 100.00 96.15 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.55 100.00 98.21 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_reg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
committed_reg 100.00 100.00 100.00 100.00
shadow_reg 100.00 100.00 100.00 100.00
staged_reg 100.00 100.00 100.00 100.00
wr_en_data_arb 100.00 100.00 100.00 100.00

Line Coverage for Module : prim_subreg_shadow
Line No.TotalCoveredPercent
TOTAL1616100.00
CONT_ASSIGN9411100.00
ALWAYS10066100.00
CONT_ASSIGN11311100.00
CONT_ASSIGN11400
CONT_ASSIGN13811100.00
CONT_ASSIGN13900
CONT_ASSIGN16011100.00
CONT_ASSIGN16100
CONT_ASSIGN18011100.00
CONT_ASSIGN18311100.00
CONT_ASSIGN18411100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN18911100.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: T2 T10 T27  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: T2 T10 T27  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
TotalCoveredPercent
Conditions262596.15
Logical262596.15
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT4,T5,T6
10CoveredT99,T100,T101
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT4,T5,T6
01CoveredT99,T100,T102
10CoveredT2,T10,T27

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101CoveredT1,T2,T3
110CoveredT99,T100,T101
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101Unreachable
110Unreachable
111Unreachable

 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011CoveredT1,T2,T3
1101CoveredT100,T102,T101
1110Not Covered
1111CoveredT1,T2,T3

 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011Unreachable
1101Unreachable
1110Unreachable
1111Unreachable

 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT100,T102,T101

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT4,T5,T6
1CoveredT99,T100,T102

Branch Coverage for Module : prim_subreg_shadow
Line No.TotalCoveredPercent
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-StatusTests
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-StatusTests
1 - - Covered T4,T5,T6
0 1 - Covered T1,T2,T3
0 0 1 Covered T2,T10,T27
0 0 0 Covered T4,T5,T6


Assert Coverage for Module : prim_subreg_shadow
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CheckSwAccessIsLegal_A 9900 9900 0 0
MubiIsNotYetSupported_A 572141768 542060720 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 9900 9900 0 0
T4 10 10 0 0
T5 10 10 0 0
T6 10 10 0 0
T28 10 10 0 0
T29 10 10 0 0
T30 10 10 0 0
T31 10 10 0 0
T32 10 10 0 0
T33 10 10 0 0
T34 10 10 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 572141768 542060720 0 0
T4 35784 34718 0 0
T5 44462 43484 0 0
T6 50652 49664 0 0
T28 8300 7444 0 0
T29 25656 24748 0 0
T30 31348 30010 0 0
T31 18574 17898 0 0
T32 25434 24144 0 0
T33 39476 38416 0 0
T34 16778 16260 0 0

Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
Line No.TotalCoveredPercent
TOTAL1616100.00
CONT_ASSIGN9411100.00
ALWAYS10066100.00
CONT_ASSIGN11311100.00
CONT_ASSIGN11400
CONT_ASSIGN13811100.00
CONT_ASSIGN13900
CONT_ASSIGN16011100.00
CONT_ASSIGN16100
CONT_ASSIGN18011100.00
CONT_ASSIGN18311100.00
CONT_ASSIGN18411100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN18911100.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: T2 T10 T27  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: T2 T10 T27  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
TotalCoveredPercent
Conditions262596.15
Logical262596.15
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT4,T5,T6
10CoveredT100,T101,T103
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT4,T5,T6
01CoveredT100,T101,T103
10CoveredT2,T10,T27

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101CoveredT1,T2,T3
110CoveredT100,T101,T103
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101Unreachable
110Unreachable
111Unreachable

 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011CoveredT1,T2,T3
1101CoveredT103,T104,T105
1110Not Covered
1111CoveredT1,T2,T3

 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011Unreachable
1101Unreachable
1110Unreachable
1111Unreachable

 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT103,T104,T105

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT4,T5,T6
1CoveredT100,T101,T103

Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
Line No.TotalCoveredPercent
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-StatusTests
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-StatusTests
1 - - Covered T4,T5,T6
0 1 - Covered T1,T2,T3
0 0 1 Covered T2,T10,T27
0 0 0 Covered T4,T5,T6


Assert Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_hi
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CheckSwAccessIsLegal_A 990 990 0 0
MubiIsNotYetSupported_A 85107854 80023304 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 990 990 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T28 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T31 1 1 0 0
T32 1 1 0 0
T33 1 1 0 0
T34 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 85107854 80023304 0 0
T4 5279 5090 0 0
T5 6781 6605 0 0
T6 7706 7544 0 0
T28 1279 1131 0 0
T29 3857 3695 0 0
T30 4789 4558 0 0
T31 2808 2687 0 0
T32 3352 3135 0 0
T33 6011 5835 0 0
T34 2479 2385 0 0

Line Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
Line No.TotalCoveredPercent
TOTAL1616100.00
CONT_ASSIGN9411100.00
ALWAYS10066100.00
CONT_ASSIGN11311100.00
CONT_ASSIGN11400
CONT_ASSIGN13811100.00
CONT_ASSIGN13900
CONT_ASSIGN16011100.00
CONT_ASSIGN16100
CONT_ASSIGN18011100.00
CONT_ASSIGN18311100.00
CONT_ASSIGN18411100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN18911100.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: T2 T10 T27  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: T2 T10 T27  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
TotalCoveredPercent
Conditions262596.15
Logical262596.15
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT4,T5,T6
10CoveredT100,T103,T104
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT4,T5,T6
01CoveredT100,T101,T103
10CoveredT2,T10,T27

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101CoveredT1,T2,T3
110CoveredT100,T103,T104
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101Unreachable
110Unreachable
111Unreachable

 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011CoveredT1,T2,T3
1101CoveredT100,T103,T104
1110Not Covered
1111CoveredT1,T2,T3

 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011Unreachable
1101Unreachable
1110Unreachable
1111Unreachable

 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT100,T103,T104

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT4,T5,T6
1CoveredT100,T101,T103

Branch Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
Line No.TotalCoveredPercent
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-StatusTests
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-StatusTests
1 - - Covered T4,T5,T6
0 1 - Covered T1,T2,T3
0 0 1 Covered T2,T10,T27
0 0 0 Covered T4,T5,T6


Assert Coverage for Instance : tb.dut.u_reg.u_io_meas_ctrl_shadowed_lo
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CheckSwAccessIsLegal_A 990 990 0 0
MubiIsNotYetSupported_A 85107854 80023304 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 990 990 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T28 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T31 1 1 0 0
T32 1 1 0 0
T33 1 1 0 0
T34 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 85107854 80023304 0 0
T4 5279 5090 0 0
T5 6781 6605 0 0
T6 7706 7544 0 0
T28 1279 1131 0 0
T29 3857 3695 0 0
T30 4789 4558 0 0
T31 2808 2687 0 0
T32 3352 3135 0 0
T33 6011 5835 0 0
T34 2479 2385 0 0

Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
Line No.TotalCoveredPercent
TOTAL1616100.00
CONT_ASSIGN9411100.00
ALWAYS10066100.00
CONT_ASSIGN11311100.00
CONT_ASSIGN11400
CONT_ASSIGN13811100.00
CONT_ASSIGN13900
CONT_ASSIGN16011100.00
CONT_ASSIGN16100
CONT_ASSIGN18011100.00
CONT_ASSIGN18311100.00
CONT_ASSIGN18411100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN18911100.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: T2 T10 T27  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: T2 T10 T27  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
TotalCoveredPercent
Conditions262596.15
Logical262596.15
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT4,T5,T6
10CoveredT100,T103,T104
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT4,T5,T6
01CoveredT100,T102,T101
10CoveredT2,T10,T27

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101CoveredT1,T2,T3
110CoveredT100,T103,T104
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101Unreachable
110Unreachable
111Unreachable

 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011CoveredT1,T2,T3
1101CoveredT101,T106,T107
1110Not Covered
1111CoveredT1,T2,T3

 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011Unreachable
1101Unreachable
1110Unreachable
1111Unreachable

 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT101,T106,T107

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT4,T5,T6
1CoveredT100,T102,T101

Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
Line No.TotalCoveredPercent
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-StatusTests
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-StatusTests
1 - - Covered T4,T5,T6
0 1 - Covered T1,T2,T3
0 0 1 Covered T2,T10,T27
0 0 0 Covered T4,T5,T6


Assert Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_hi
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CheckSwAccessIsLegal_A 990 990 0 0
MubiIsNotYetSupported_A 41516524 40224458 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 990 990 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T28 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T31 1 1 0 0
T32 1 1 0 0
T33 1 1 0 0
T34 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 41516524 40224458 0 0
T4 2982 2948 0 0
T5 3330 3302 0 0
T6 3827 3772 0 0
T28 600 565 0 0
T29 1875 1847 0 0
T30 2334 2279 0 0
T31 1436 1415 0 0
T32 2798 2736 0 0
T33 2973 2918 0 0
T34 1393 1379 0 0

Line Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
Line No.TotalCoveredPercent
TOTAL1616100.00
CONT_ASSIGN9411100.00
ALWAYS10066100.00
CONT_ASSIGN11311100.00
CONT_ASSIGN11400
CONT_ASSIGN13811100.00
CONT_ASSIGN13900
CONT_ASSIGN16011100.00
CONT_ASSIGN16100
CONT_ASSIGN18011100.00
CONT_ASSIGN18311100.00
CONT_ASSIGN18411100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN18911100.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: T2 T10 T27  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: T2 T10 T27  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
TotalCoveredPercent
Conditions262596.15
Logical262596.15
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT4,T5,T6
10CoveredT100,T103,T107
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT4,T5,T6
01CoveredT100,T102,T101
10CoveredT2,T10,T27

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101CoveredT1,T2,T3
110CoveredT100,T103,T107
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101Unreachable
110Unreachable
111Unreachable

 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011CoveredT1,T2,T3
1101CoveredT101,T104,T106
1110Not Covered
1111CoveredT1,T2,T3

 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011Unreachable
1101Unreachable
1110Unreachable
1111Unreachable

 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT101,T104,T106

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT4,T5,T6
1CoveredT100,T102,T101

Branch Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
Line No.TotalCoveredPercent
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-StatusTests
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-StatusTests
1 - - Covered T4,T5,T6
0 1 - Covered T1,T2,T3
0 0 1 Covered T2,T10,T27
0 0 0 Covered T4,T5,T6


Assert Coverage for Instance : tb.dut.u_reg.u_io_div2_meas_ctrl_shadowed_lo
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CheckSwAccessIsLegal_A 990 990 0 0
MubiIsNotYetSupported_A 41516524 40224458 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 990 990 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T28 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T31 1 1 0 0
T32 1 1 0 0
T33 1 1 0 0
T34 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 41516524 40224458 0 0
T4 2982 2948 0 0
T5 3330 3302 0 0
T6 3827 3772 0 0
T28 600 565 0 0
T29 1875 1847 0 0
T30 2334 2279 0 0
T31 1436 1415 0 0
T32 2798 2736 0 0
T33 2973 2918 0 0
T34 1393 1379 0 0

Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
Line No.TotalCoveredPercent
TOTAL1616100.00
CONT_ASSIGN9411100.00
ALWAYS10066100.00
CONT_ASSIGN11311100.00
CONT_ASSIGN11400
CONT_ASSIGN13811100.00
CONT_ASSIGN13900
CONT_ASSIGN16011100.00
CONT_ASSIGN16100
CONT_ASSIGN18011100.00
CONT_ASSIGN18311100.00
CONT_ASSIGN18411100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN18911100.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: T2 T10 T27  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: T2 T10 T27  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
TotalCoveredPercent
Conditions262596.15
Logical262596.15
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT4,T5,T6
10CoveredT99,T100,T108
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT4,T5,T6
01CoveredT99,T100,T102
10CoveredT2,T10,T27

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101CoveredT1,T2,T3
110CoveredT99,T100,T108
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101Unreachable
110Unreachable
111Unreachable

 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011CoveredT1,T2,T3
1101CoveredT100,T102,T101
1110Not Covered
1111CoveredT1,T2,T3

 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011Unreachable
1101Unreachable
1110Unreachable
1111Unreachable

 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT100,T102,T101

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT4,T5,T6
1CoveredT99,T100,T102

Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
Line No.TotalCoveredPercent
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-StatusTests
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-StatusTests
1 - - Covered T4,T5,T6
0 1 - Covered T1,T2,T3
0 0 1 Covered T2,T10,T27
0 0 0 Covered T4,T5,T6


Assert Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_hi
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CheckSwAccessIsLegal_A 990 990 0 0
MubiIsNotYetSupported_A 20757847 20111914 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 990 990 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T28 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T31 1 1 0 0
T32 1 1 0 0
T33 1 1 0 0
T34 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 20757847 20111914 0 0
T4 1491 1474 0 0
T5 1665 1651 0 0
T6 1913 1886 0 0
T28 300 283 0 0
T29 938 924 0 0
T30 1167 1139 0 0
T31 716 706 0 0
T32 1398 1367 0 0
T33 1486 1458 0 0
T34 695 688 0 0

Line Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
Line No.TotalCoveredPercent
TOTAL1616100.00
CONT_ASSIGN9411100.00
ALWAYS10066100.00
CONT_ASSIGN11311100.00
CONT_ASSIGN11400
CONT_ASSIGN13811100.00
CONT_ASSIGN13900
CONT_ASSIGN16011100.00
CONT_ASSIGN16100
CONT_ASSIGN18011100.00
CONT_ASSIGN18311100.00
CONT_ASSIGN18411100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN18911100.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: T2 T10 T27  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: T2 T10 T27  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
TotalCoveredPercent
Conditions262596.15
Logical262596.15
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT4,T5,T6
10CoveredT99,T100,T105
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT4,T5,T6
01CoveredT99,T100,T102
10CoveredT2,T10,T27

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101CoveredT1,T2,T3
110CoveredT99,T100,T105
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101Unreachable
110Unreachable
111Unreachable

 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011CoveredT1,T2,T3
1101CoveredT100,T102,T101
1110Not Covered
1111CoveredT1,T2,T3

 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011Unreachable
1101Unreachable
1110Unreachable
1111Unreachable

 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT100,T102,T101

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT4,T5,T6
1CoveredT99,T100,T102

Branch Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
Line No.TotalCoveredPercent
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-StatusTests
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-StatusTests
1 - - Covered T4,T5,T6
0 1 - Covered T1,T2,T3
0 0 1 Covered T2,T10,T27
0 0 0 Covered T4,T5,T6


Assert Coverage for Instance : tb.dut.u_reg.u_io_div4_meas_ctrl_shadowed_lo
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CheckSwAccessIsLegal_A 990 990 0 0
MubiIsNotYetSupported_A 20757847 20111914 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 990 990 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T28 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T31 1 1 0 0
T32 1 1 0 0
T33 1 1 0 0
T34 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 20757847 20111914 0 0
T4 1491 1474 0 0
T5 1665 1651 0 0
T6 1913 1886 0 0
T28 300 283 0 0
T29 938 924 0 0
T30 1167 1139 0 0
T31 716 706 0 0
T32 1398 1367 0 0
T33 1486 1458 0 0
T34 695 688 0 0

Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
Line No.TotalCoveredPercent
TOTAL1616100.00
CONT_ASSIGN9411100.00
ALWAYS10066100.00
CONT_ASSIGN11311100.00
CONT_ASSIGN11400
CONT_ASSIGN13811100.00
CONT_ASSIGN13900
CONT_ASSIGN16011100.00
CONT_ASSIGN16100
CONT_ASSIGN18011100.00
CONT_ASSIGN18311100.00
CONT_ASSIGN18411100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN18911100.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: T2 T10 T27  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: T2 T10 T27  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
TotalCoveredPercent
Conditions262596.15
Logical262596.15
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT4,T5,T6
10CoveredT104,T105,T106
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT4,T5,T6
01CoveredT102,T101,T103
10CoveredT2,T10,T27

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101CoveredT1,T2,T3
110CoveredT104,T105,T106
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101Unreachable
110Unreachable
111Unreachable

 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011CoveredT1,T2,T3
1101CoveredT101,T103,T104
1110Not Covered
1111CoveredT1,T2,T3

 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011Unreachable
1101Unreachable
1110Unreachable
1111Unreachable

 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT101,T103,T104

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT4,T5,T6
1CoveredT102,T101,T103

Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
Line No.TotalCoveredPercent
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-StatusTests
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-StatusTests
1 - - Covered T4,T5,T6
0 1 - Covered T1,T2,T3
0 0 1 Covered T2,T10,T27
0 0 0 Covered T4,T5,T6


Assert Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_hi
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CheckSwAccessIsLegal_A 990 990 0 0
MubiIsNotYetSupported_A 93713926 88303698 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 990 990 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T28 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T31 1 1 0 0
T32 1 1 0 0
T33 1 1 0 0
T34 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 93713926 88303698 0 0
T4 5500 5302 0 0
T5 7064 6881 0 0
T6 8027 7858 0 0
T28 1332 1178 0 0
T29 4210 4041 0 0
T30 4989 4749 0 0
T31 2924 2798 0 0
T32 3492 3266 0 0
T33 6262 6079 0 0
T34 2582 2485 0 0

Line Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
Line No.TotalCoveredPercent
TOTAL1616100.00
CONT_ASSIGN9411100.00
ALWAYS10066100.00
CONT_ASSIGN11311100.00
CONT_ASSIGN11400
CONT_ASSIGN13811100.00
CONT_ASSIGN13900
CONT_ASSIGN16011100.00
CONT_ASSIGN16100
CONT_ASSIGN18011100.00
CONT_ASSIGN18311100.00
CONT_ASSIGN18411100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN18911100.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: T2 T10 T27  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: T2 T10 T27  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
TotalCoveredPercent
Conditions262596.15
Logical262596.15
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT4,T5,T6
10CoveredT104,T105,T106
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT4,T5,T6
01CoveredT102,T101,T103
10CoveredT2,T10,T27

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101CoveredT1,T2,T3
110CoveredT104,T105,T106
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101Unreachable
110Unreachable
111Unreachable

 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011CoveredT1,T2,T3
1101CoveredT101,T103,T104
1110Not Covered
1111CoveredT1,T2,T3

 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011Unreachable
1101Unreachable
1110Unreachable
1111Unreachable

 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT101,T103,T104

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT4,T5,T6
1CoveredT102,T101,T103

Branch Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
Line No.TotalCoveredPercent
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-StatusTests
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-StatusTests
1 - - Covered T4,T5,T6
0 1 - Covered T1,T2,T3
0 0 1 Covered T2,T10,T27
0 0 0 Covered T4,T5,T6


Assert Coverage for Instance : tb.dut.u_reg.u_main_meas_ctrl_shadowed_lo
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CheckSwAccessIsLegal_A 990 990 0 0
MubiIsNotYetSupported_A 93713926 88303698 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 990 990 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T28 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T31 1 1 0 0
T32 1 1 0 0
T33 1 1 0 0
T34 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 93713926 88303698 0 0
T4 5500 5302 0 0
T5 7064 6881 0 0
T6 8027 7858 0 0
T28 1332 1178 0 0
T29 4210 4041 0 0
T30 4989 4749 0 0
T31 2924 2798 0 0
T32 3492 3266 0 0
T33 6262 6079 0 0
T34 2582 2485 0 0

Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
Line No.TotalCoveredPercent
TOTAL1616100.00
CONT_ASSIGN9411100.00
ALWAYS10066100.00
CONT_ASSIGN11311100.00
CONT_ASSIGN11400
CONT_ASSIGN13811100.00
CONT_ASSIGN13900
CONT_ASSIGN16011100.00
CONT_ASSIGN16100
CONT_ASSIGN18011100.00
CONT_ASSIGN18311100.00
CONT_ASSIGN18411100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN18911100.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: T2 T10 T27  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: T2 T10 T27  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
TotalCoveredPercent
Conditions262596.15
Logical262596.15
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT4,T5,T6
10CoveredT100,T101,T104
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT4,T5,T6
01CoveredT100,T102,T101
10CoveredT2,T10,T27

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101CoveredT1,T2,T3
110CoveredT100,T101,T104
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101Unreachable
110Unreachable
111Unreachable

 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011CoveredT1,T2,T3
1101CoveredT102,T104,T105
1110Not Covered
1111CoveredT1,T2,T3

 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011Unreachable
1101Unreachable
1110Unreachable
1111Unreachable

 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT102,T104,T105

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT4,T5,T6
1CoveredT100,T102,T101

Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
Line No.TotalCoveredPercent
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-StatusTests
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-StatusTests
1 - - Covered T4,T5,T6
0 1 - Covered T1,T2,T3
0 0 1 Covered T2,T10,T27
0 0 0 Covered T4,T5,T6


Assert Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_hi
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CheckSwAccessIsLegal_A 990 990 0 0
MubiIsNotYetSupported_A 44974733 42366986 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 990 990 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T28 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T31 1 1 0 0
T32 1 1 0 0
T33 1 1 0 0
T34 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 44974733 42366986 0 0
T4 2640 2545 0 0
T5 3391 3303 0 0
T6 3853 3772 0 0
T28 639 565 0 0
T29 1948 1867 0 0
T30 2395 2280 0 0
T31 1403 1343 0 0
T32 1677 1568 0 0
T33 3006 2918 0 0
T34 1240 1193 0 0

Line Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
Line No.TotalCoveredPercent
TOTAL1616100.00
CONT_ASSIGN9411100.00
ALWAYS10066100.00
CONT_ASSIGN11311100.00
CONT_ASSIGN11400
CONT_ASSIGN13811100.00
CONT_ASSIGN13900
CONT_ASSIGN16011100.00
CONT_ASSIGN16100
CONT_ASSIGN18011100.00
CONT_ASSIGN18311100.00
CONT_ASSIGN18411100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN18911100.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: T2 T10 T27  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: T2 T10 T27  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
TotalCoveredPercent
Conditions262596.15
Logical262596.15
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT4,T5,T6
10CoveredT101,T104,T105
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT4,T5,T6
01CoveredT100,T102,T101
10CoveredT2,T10,T27

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101CoveredT1,T2,T3
110CoveredT101,T104,T105
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT4,T5,T6
101Unreachable
110Unreachable
111Unreachable

 LINE       138
 EXPRESSION (we & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011CoveredT1,T2,T3
1101CoveredT100,T102,T103
1110Not Covered
1111CoveredT1,T2,T3

 LINE       139
 EXPRESSION (de & phase_q & ((~err_update)) & ((~err_storage)))
             -1   ---2---   -------3-------   --------4-------
-1--2--3--4-StatusTests
0111CoveredT1,T2,T3
1011Unreachable
1101Unreachable
1110Unreachable
1111Unreachable

 LINE       183
 EXPRESSION (((~staged_q) != wr_data) ? (phase_q & wr_en) : 1'b0)
             ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT4,T5,T6

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT100,T102,T103

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT4,T5,T6
1CoveredT100,T102,T101

Branch Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
Line No.TotalCoveredPercent
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-StatusTests
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-StatusTests
1 - - Covered T4,T5,T6
0 1 - Covered T1,T2,T3
0 0 1 Covered T2,T10,T27
0 0 0 Covered T4,T5,T6


Assert Coverage for Instance : tb.dut.u_reg.u_usb_meas_ctrl_shadowed_lo
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CheckSwAccessIsLegal_A 990 990 0 0
MubiIsNotYetSupported_A 44974733 42366986 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 990 990 0 0
T4 1 1 0 0
T5 1 1 0 0
T6 1 1 0 0
T28 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T31 1 1 0 0
T32 1 1 0 0
T33 1 1 0 0
T34 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 44974733 42366986 0 0
T4 2640 2545 0 0
T5 3391 3303 0 0
T6 3853 3772 0 0
T28 639 565 0 0
T29 1948 1867 0 0
T30 2395 2280 0 0
T31 1403 1343 0 0
T32 1677 1568 0 0
T33 3006 2918 0 0
T34 1240 1193 0 0

0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%