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



Module Instance : tb.dut.u_reg.u_cfg_shadowed_kmac_en

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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_cfg_shadowed_kstrength

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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_cfg_shadowed_mode

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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_cfg_shadowed_msg_endianness

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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_cfg_shadowed_state_endianness

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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_cfg_shadowed_sideload

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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_cfg_shadowed_entropy_mode

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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_cfg_shadowed_entropy_fast_process

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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_cfg_shadowed_msg_mask

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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_cfg_shadowed_entropy_ready

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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_cfg_shadowed_en_unsupported_modestrength

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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_entropy_refresh_threshold_shadowed

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 100.00 88.46 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.66 100.00 94.64 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.87 100.00 99.46 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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT88,T89,T90
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT88,T89,T91
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
1CoveredT1,T2,T3

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

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT88,T89,T91

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT88,T89,T90

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 T1,T2,T3
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


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 10572 10572 0 0
MubiIsNotYetSupported_A 2147483647 2147483647 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 10572 10572 0 0
T1 12 12 0 0
T2 12 12 0 0
T3 12 12 0 0
T4 12 12 0 0
T7 12 12 0 0
T9 12 12 0 0
T10 12 12 0 0
T29 12 12 0 0
T30 12 12 0 0
T43 12 12 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 2147483647 2147483647 0 0
T1 1915092 1913916 0 0
T2 1025616 1024884 0 0
T3 1267548 1266372 0 0
T4 19272 18132 0 0
T7 472488 471624 0 0
T9 333744 332892 0 0
T10 2275356 2274264 0 0
T29 53232 52416 0 0
T30 66864 66084 0 0
T43 21660 20496 0 0

Line Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_kmac_en
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_cfg_shadowed_kmac_en
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT89,T90,T91
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT92,T93,T94
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
1CoveredT1,T29,T30

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T29,T30

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T29,T30
10CoveredT1,T29,T30
11CoveredT92,T93,T94

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT89,T90,T91

Branch Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_kmac_en
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 T1,T29,T30
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_kmac_en
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

Line Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_kstrength
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_cfg_shadowed_kstrength
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT90,T91,T95
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT89,T95,T96
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
1CoveredT1,T2,T3

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

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT89,T95,T96

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT90,T91,T95

Branch Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_kstrength
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 T1,T2,T3
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_kstrength
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

Line Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_mode
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_cfg_shadowed_mode
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT90,T92,T95
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT89,T96,T93
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
1CoveredT1,T29,T30

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T29,T30

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T29,T30
10CoveredT1,T29,T30
11CoveredT89,T96,T93

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT90,T92,T95

Branch Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_mode
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 T1,T29,T30
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_mode
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

Line Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_msg_endianness
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_cfg_shadowed_msg_endianness
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT89,T90,T97
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT89,T95,T93
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
1CoveredT1,T2,T3

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

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT89,T95,T93

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT89,T90,T97

Branch Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_msg_endianness
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 T1,T2,T3
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_msg_endianness
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

Line Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_state_endianness
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_cfg_shadowed_state_endianness
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT90,T91,T92
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT95,T96,T93
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
1CoveredT1,T2,T3

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

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT95,T96,T93

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT90,T91,T92

Branch Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_state_endianness
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 T1,T2,T3
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_state_endianness
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

Line Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_sideload
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_cfg_shadowed_sideload
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT89,T90,T92
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT96,T93,T94
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
1CoveredT43,T10,T12

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT43,T10,T12

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT43,T10,T12
10CoveredT43,T10,T12
11CoveredT96,T93,T94

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT89,T90,T92

Branch Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_sideload
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 T43,T10,T12
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_sideload
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

Line Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_entropy_mode
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_cfg_shadowed_entropy_mode
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT90,T91,T92
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT89,T91,T96
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
1CoveredT1,T2,T3

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

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT89,T91,T96

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT90,T91,T92

Branch Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_entropy_mode
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 T1,T2,T3
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_entropy_mode
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

Line Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_entropy_fast_process
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_cfg_shadowed_entropy_fast_process
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT90,T92,T96
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT93,T94,T97
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
1CoveredT1,T2,T3

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

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT93,T94,T97

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT90,T92,T96

Branch Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_entropy_fast_process
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 T1,T2,T3
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_entropy_fast_process
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

Line Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_msg_mask
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_cfg_shadowed_msg_mask
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT89,T90,T92
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT89,T93,T94
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
1CoveredT1,T2,T3

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

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT89,T93,T94

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT89,T90,T92

Branch Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_msg_mask
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 T1,T2,T3
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_msg_mask
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

Line Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_entropy_ready
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_cfg_shadowed_entropy_ready
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT90,T91,T96
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT89,T94,T97
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
1CoveredT1,T2,T3

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

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT89,T94,T97

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT90,T91,T96

Branch Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_entropy_ready
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 T1,T2,T3
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_entropy_ready
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

Line Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_en_unsupported_modestrength
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_cfg_shadowed_en_unsupported_modestrength
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT89,T90,T91
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT89,T93,T97
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
1CoveredT1,T2,T3

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

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT89,T93,T97

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT89,T90,T91

Branch Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_en_unsupported_modestrength
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 T1,T2,T3
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_cfg_shadowed_en_unsupported_modestrength
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

Line Coverage for Instance : tb.dut.u_reg.u_entropy_refresh_threshold_shadowed
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: T14 T15 T36  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: T1 T2 T3  101 1/1 phase_q <= 1'b0; Tests: T1 T2 T3  102 1/1 end else if (wr_en && !err_storage) begin Tests: T1 T2 T3  103 1/1 phase_q <= ~phase_q; Tests: T1 T2 T3  104 1/1 end else if (phase_clear || err_storage) begin Tests: T1 T2 T3  105 1/1 phase_q <= 1'b0; Tests: T14 T15 T36  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_entropy_refresh_threshold_shadowed
TotalCoveredPercent
Conditions262388.46
Logical262388.46
Non-Logical00
Event00

 LINE       102
 EXPRESSION (wr_en && ((!err_storage)))
             --1--    --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       104
 EXPRESSION (phase_clear || err_storage)
             -----1-----    -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT88,T90,T91
10CoveredT14,T15,T36

 LINE       113
 EXPRESSION (we & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
101CoveredT1,T2,T3
110Not Covered
111CoveredT1,T2,T3

 LINE       114
 EXPRESSION (de & ((~phase_q)) & ((~err_storage)))
             -1   ------2-----   --------3-------
-1--2--3-StatusTests
011CoveredT1,T2,T3
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
1101CoveredT88,T90,T91
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
1CoveredT9,T14,T15

 LINE       183
 SUB-EXPRESSION ((~staged_q) != wr_data)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT9,T14,T15

 LINE       183
 SUB-EXPRESSION (phase_q & wr_en)
                 ---1---   --2--
-1--2-StatusTests
01CoveredT9,T14,T15
10CoveredT9,T14,T15
11CoveredT88,T90,T91

 LINE       184
 EXPRESSION ((~shadow_q) != committed_q)
            --------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT88,T90,T91

Branch Coverage for Instance : tb.dut.u_reg.u_entropy_refresh_threshold_shadowed
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 T9,T14,T15
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 T1,T2,T3
0 1 - Covered T1,T2,T3
0 0 1 Covered T14,T15,T36
0 0 0 Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg.u_entropy_refresh_threshold_shadowed
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 881 881 0 0
MubiIsNotYetSupported_A 648366898 648156678 0 0


CheckSwAccessIsLegal_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 881 881 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T7 1 1 0 0
T9 1 1 0 0
T10 1 1 0 0
T29 1 1 0 0
T30 1 1 0 0
T43 1 1 0 0

MubiIsNotYetSupported_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 648366898 648156678 0 0
T1 159591 159493 0 0
T2 85468 85407 0 0
T3 105629 105531 0 0
T4 1606 1511 0 0
T7 39374 39302 0 0
T9 27812 27741 0 0
T10 189613 189522 0 0
T29 4436 4368 0 0
T30 5572 5507 0 0
T43 1805 1708 0 0

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