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



Module Instance : tb.dut.u_adc_ctrl_core.u_adc_ctrl_fsm

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.75 100.00 100.00 100.00 98.73 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.75 100.00 100.00 100.00 98.73 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_adc_ctrl_core


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
u_adc_ctrl_fsm_sva 100.00 100.00

Line Coverage for Module : adc_ctrl_fsm
Line No.TotalCoveredPercent
TOTAL162162100.00
CONT_ASSIGN5811100.00
ALWAYS6155100.00
CONT_ASSIGN7111100.00
CONT_ASSIGN7211100.00
CONT_ASSIGN7411100.00
ALWAYS7755100.00
CONT_ASSIGN8711100.00
ALWAYS9055100.00
CONT_ASSIGN10011100.00
ALWAYS10355100.00
CONT_ASSIGN11311100.00
ALWAYS11755100.00
CONT_ASSIGN12711100.00
CONT_ASSIGN12811100.00
CONT_ASSIGN12911100.00
CONT_ASSIGN13111100.00
CONT_ASSIGN13211100.00
CONT_ASSIGN13311100.00
ALWAYS1361414100.00
ALWAYS15766100.00
CONT_ASSIGN16911100.00
CONT_ASSIGN17311100.00
ALWAYS17655100.00
CONT_ASSIGN18611100.00
CONT_ASSIGN18711100.00
ALWAYS1909595100.00

57 fsm_state_e fsm_state_q, fsm_state_d; 58 1/1 assign aon_fsm_state_o = fsm_state_q; Tests: T1 T2 T3  59 60 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 61 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  62 1/1 trigger_q <= 1'b0; Tests: T1 T2 T3  63 end 64 1/1 else if (cfg_fsm_rst_i) begin Tests: T1 T2 T3  65 1/1 trigger_q <= 1'b0; Tests: T12 T13 T15  66 end else begin 67 1/1 trigger_q <= cfg_adc_enable_i; Tests: T1 T2 T3  68 end 69 end 70 71 1/1 assign trigger_l2h = (trigger_q == 1'b0) && (cfg_adc_enable_i == 1'b1); Tests: T1 T2 T3  72 1/1 assign trigger_h2l = (trigger_q == 1'b1) && (cfg_adc_enable_i == 1'b0); Tests: T1 T2 T3  73 74 1/1 assign pwrup_timer_cnt_d = (pwrup_timer_cnt_en) ? pwrup_timer_cnt_q + 1'b1 : pwrup_timer_cnt_q; Tests: T1 T2 T3  75 76 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 77 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  78 1/1 pwrup_timer_cnt_q <= '0; Tests: T1 T2 T3  79 end 80 1/1 else if (pwrup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin Tests: T1 T2 T3  81 1/1 pwrup_timer_cnt_q <= '0; Tests: T2 T3 T4  82 end else begin 83 1/1 pwrup_timer_cnt_q <= pwrup_timer_cnt_d; Tests: T1 T2 T3  84 end 85 end 86 87 1/1 assign lp_sample_cnt_d = (lp_sample_cnt_en) ? lp_sample_cnt_q + 1'b1 : lp_sample_cnt_q; Tests: T1 T2 T3  88 89 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 90 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  91 1/1 lp_sample_cnt_q <= '0; Tests: T1 T2 T3  92 end 93 1/1 else if (lp_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin Tests: T1 T2 T3  94 1/1 lp_sample_cnt_q <= '0; Tests: T2 T4 T5  95 end else begin 96 1/1 lp_sample_cnt_q <= lp_sample_cnt_d; Tests: T1 T2 T3  97 end 98 end 99 100 1/1 assign np_sample_cnt_d = (np_sample_cnt_en) ? np_sample_cnt_q + 1'b1 : np_sample_cnt_q; Tests: T1 T2 T3  101 102 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 103 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  104 1/1 np_sample_cnt_q <= '0; Tests: T1 T2 T3  105 end 106 1/1 else if (np_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin Tests: T1 T2 T3  107 1/1 np_sample_cnt_q <= '0; Tests: T2 T4 T5  108 end else begin 109 1/1 np_sample_cnt_q <= np_sample_cnt_d; Tests: T1 T2 T3  110 end 111 end 112 113 1/1 assign wakeup_timer_cnt_d = (wakeup_timer_cnt_en) ? Tests: T1 T2 T3  114 wakeup_timer_cnt_q + 1'b1 : wakeup_timer_cnt_q; 115 116 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 117 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  118 1/1 wakeup_timer_cnt_q <= '0; Tests: T1 T2 T3  119 end 120 1/1 else if (wakeup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin Tests: T1 T2 T3  121 1/1 wakeup_timer_cnt_q <= '0; Tests: T2 T4 T5  122 end else begin 123 1/1 wakeup_timer_cnt_q <= wakeup_timer_cnt_d; Tests: T1 T2 T3  124 end 125 end 126 127 1/1 assign fsm_chn0_sel = (fsm_state_q == ONEST_0) || (fsm_state_q == LP_0) || (fsm_state_q == NP_0); Tests: T1 T2 T3  128 1/1 assign chn0_val_we_d = fsm_chn0_sel && adc_d_val_i;//adc_d_val_i is a valid pulse Tests: T1 T2 T3  129 1/1 assign chn0_val_d = (chn0_val_we_d) ? adc_d_i : chn0_val_o; Tests: T1 T2 T3  130 131 1/1 assign fsm_chn1_sel = (fsm_state_q == ONEST_1) || (fsm_state_q == LP_1) || (fsm_state_q == NP_1); Tests: T1 T2 T3  132 1/1 assign chn1_val_we_d = fsm_chn1_sel && adc_d_val_i; Tests: T1 T2 T3  133 1/1 assign chn1_val_d = (chn1_val_we_d) ? adc_d_i : chn1_val_o; Tests: T1 T2 T3  134 135 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 136 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  137 1/1 chn0_val_we_o <= '0; Tests: T1 T2 T3  138 1/1 chn1_val_we_o <= '0; Tests: T1 T2 T3  139 1/1 chn0_val_o <= '0; Tests: T1 T2 T3  140 1/1 chn1_val_o <= '0; Tests: T1 T2 T3  141 end 142 1/1 else if (cfg_fsm_rst_i) begin Tests: T1 T2 T3  143 1/1 chn0_val_we_o <= '0; Tests: T12 T13 T15  144 1/1 chn1_val_we_o <= '0; Tests: T12 T13 T15  145 1/1 chn0_val_o <= '0; Tests: T12 T13 T15  146 1/1 chn1_val_o <= '0; Tests: T12 T13 T15  147 end else begin 148 1/1 chn0_val_we_o <= chn0_val_we_d; Tests: T1 T2 T3  149 1/1 chn1_val_we_o <= chn1_val_we_d; Tests: T1 T2 T3  150 1/1 chn0_val_o <= chn0_val_d; Tests: T1 T2 T3  151 1/1 chn1_val_o <= chn1_val_d; Tests: T1 T2 T3  152 end 153 end 154 155 logic ld_match; 156 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 157 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  158 1/1 adc_ctrl_match_q <= '0; Tests: T1 T2 T3  159 end 160 1/1 else if (cfg_fsm_rst_i) begin Tests: T1 T2 T3  161 1/1 adc_ctrl_match_q <= '0; Tests: T12 T13 T15  162 end 163 1/1 else if (ld_match) begin Tests: T1 T2 T3  164 1/1 adc_ctrl_match_q <= adc_ctrl_match_i; Tests: T2 T3 T4  165 end MISSING_ELSE 166 end 167 168 logic np_match; 169 1/1 assign np_match = |adc_ctrl_match_i & // if current match is non-zero Tests: T1 T2 T3  170 ((adc_ctrl_match_i == adc_ctrl_match_q) | // match if same as previous match 171 ~|adc_ctrl_match_q); // or match if previous match was zero 172 173 1/1 assign stay_match = np_match; Tests: T1 T2 T3  174 175 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 176 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  177 1/1 fsm_state_q <= PWRDN; Tests: T1 T2 T3  178 end 179 1/1 else if (trigger_h2l || cfg_fsm_rst_i) begin Tests: T1 T2 T3  180 1/1 fsm_state_q <= PWRDN; Tests: T2 T4 T5  181 end else begin 182 1/1 fsm_state_q <= fsm_state_d; Tests: T1 T2 T3  183 end 184 end 185 186 1/1 assign lp_sample_cnt_thresh = cfg_lp_sample_cnt_i - 1'b1; Tests: T1 T2 T3  187 1/1 assign np_sample_cnt_thresh = cfg_np_sample_cnt_i - 1'b1; Tests: T1 T2 T3  188 189 always_comb begin: adc_fsm 190 1/1 fsm_state_d = fsm_state_q; Tests: T1 T2 T3  191 //outputs 192 1/1 adc_chn_sel_o = 2'b0; Tests: T1 T2 T3  193 1/1 adc_pd_o = 1'b0;//default value Tests: T1 T2 T3  194 1/1 pwrup_timer_cnt_clr = 1'b0; Tests: T1 T2 T3  195 1/1 pwrup_timer_cnt_en = 1'b0; Tests: T1 T2 T3  196 1/1 lp_sample_cnt_clr = 1'b0; Tests: T1 T2 T3  197 1/1 lp_sample_cnt_en = 1'b0; Tests: T1 T2 T3  198 1/1 wakeup_timer_cnt_clr = 1'b0; Tests: T1 T2 T3  199 1/1 wakeup_timer_cnt_en = 1'b0; Tests: T1 T2 T3  200 1/1 np_sample_cnt_clr = 1'b0; Tests: T1 T2 T3  201 1/1 np_sample_cnt_en = 1'b0; Tests: T1 T2 T3  202 1/1 adc_ctrl_done_o = 1'b0; Tests: T1 T2 T3  203 1/1 oneshot_done_o = 1'b0; Tests: T1 T2 T3  204 1/1 ld_match = 1'b0; Tests: T1 T2 T3  205 1/1 aon_fsm_trans_o = 1'b0; Tests: T1 T2 T3  206 207 1/1 unique case (fsm_state_q) Tests: T1 T2 T3  208 PWRDN: begin 209 1/1 adc_pd_o = 1'b1; Tests: T1 T2 T3  210 1/1 if (trigger_l2h) begin Tests: T1 T2 T3  211 1/1 fsm_state_d = PWRUP; Tests: T2 T3 T4  212 end MISSING_ELSE 213 end 214 215 PWRUP: begin 216 1/1 if (pwrup_timer_cnt_q != cfg_pwrup_time_i) begin Tests: T2 T3 T4  217 1/1 pwrup_timer_cnt_en = 1'b1; Tests: T2 T3 T4  218 end 219 1/1 else if (pwrup_timer_cnt_q == cfg_pwrup_time_i) begin Tests: T2 T3 T4  220 1/1 pwrup_timer_cnt_clr = 1'b1; Tests: T2 T3 T4  221 1/1 if (cfg_oneshot_mode_i) begin Tests: T2 T3 T4  222 1/1 fsm_state_d = ONEST_0; Tests: T2 T4 T5  223 end 224 1/1 else if (cfg_lp_mode_i) begin Tests: T2 T3 T4  225 1/1 fsm_state_d = LP_0; Tests: T7 T8 T13  226 end 227 1/1 else if (!cfg_lp_mode_i) begin Tests: T2 T3 T4  228 1/1 fsm_state_d = NP_0; Tests: T2 T3 T4  229 end ==> MISSING_ELSE 230 end ==> MISSING_ELSE 231 end 232 233 ONEST_0: begin 234 1/1 adc_chn_sel_o = 2'b01; Tests: T2 T4 T5  235 1/1 if (adc_d_val_i) begin//sample chn0 value Tests: T2 T4 T5  236 1/1 fsm_state_d = ONEST_021; Tests: T2 T4 T5  237 end MISSING_ELSE 238 end 239 240 ONEST_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 241 1/1 if (!adc_d_val_i) begin Tests: T2 T4 T5  242 1/1 fsm_state_d = ONEST_1; Tests: T2 T4 T5  243 end MISSING_ELSE 244 end 245 246 ONEST_1: begin 247 1/1 adc_chn_sel_o = 2'b10; Tests: T2 T4 T5  248 1/1 if (adc_d_val_i) begin//sample chn1 value Tests: T2 T4 T5  249 1/1 fsm_state_d = ONEST_DONE; Tests: T2 T4 T5  250 end MISSING_ELSE 251 end 252 253 // delay done assertion by one cycle to match 254 // adc capture register timing 255 ONEST_DONE: begin 256 1/1 oneshot_done_o = 1'b1; Tests: T2 T4 T5  257 1/1 fsm_state_d = PWRDN; Tests: T2 T4 T5  258 end 259 260 LP_0: begin 261 1/1 adc_chn_sel_o = 2'b01; Tests: T7 T8 T13  262 1/1 if (adc_d_val_i) begin//sample chn0 value Tests: T7 T8 T13  263 1/1 fsm_state_d = LP_021; Tests: T7 T8 T13  264 end MISSING_ELSE 265 end 266 267 LP_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 268 1/1 if (!adc_d_val_i) begin Tests: T7 T8 T13  269 1/1 fsm_state_d = LP_1; Tests: T7 T8 T13  270 end MISSING_ELSE 271 end 272 273 LP_1: begin 274 1/1 adc_chn_sel_o = 2'b10; Tests: T7 T8 T13  275 1/1 if (adc_d_val_i) begin//sample chn1 value Tests: T7 T8 T13  276 1/1 fsm_state_d = LP_EVAL; Tests: T7 T8 T13  277 end MISSING_ELSE 278 end 279 280 LP_EVAL: begin 281 // do not transition forward until handshake with ADC is complete 282 1/1 if (!adc_d_val_i) begin Tests: T7 T8 T13  283 1/1 ld_match = 1'b1; Tests: T7 T8 T13  284 1/1 if (!stay_match) begin Tests: T7 T8 T13  285 1/1 fsm_state_d = LP_SLP; Tests: T7 T13 T14  286 1/1 lp_sample_cnt_clr = 1'b1; Tests: T7 T13 T14  287 1/1 end else if (lp_sample_cnt_q < lp_sample_cnt_thresh) begin Tests: T8 T13 T14  288 1/1 fsm_state_d = LP_SLP; Tests: T8 T13 T14  289 1/1 lp_sample_cnt_en = 1'b1; Tests: T8 T13 T14  290 1/1 end else if (lp_sample_cnt_q == lp_sample_cnt_thresh) begin Tests: T8 T13 T14  291 1/1 fsm_state_d = NP_0; Tests: T8 T13 T14  292 1/1 lp_sample_cnt_clr = 1'b1; Tests: T8 T13 T14  293 1/1 aon_fsm_trans_o = 1'b1; Tests: T8 T13 T14  294 end MISSING_ELSE 295 end MISSING_ELSE 296 end 297 298 LP_SLP: begin 299 1/1 adc_pd_o = 1'b1; Tests: T7 T8 T13  300 1/1 if (wakeup_timer_cnt_q != cfg_wakeup_time_i) begin Tests: T7 T8 T13  301 1/1 wakeup_timer_cnt_en = 1'b1; Tests: T7 T8 T13  302 end 303 1/1 else if (wakeup_timer_cnt_q == cfg_wakeup_time_i) begin Tests: T7 T8 T13  304 1/1 fsm_state_d = LP_PWRUP; Tests: T7 T8 T13  305 1/1 wakeup_timer_cnt_clr = 1'b1; Tests: T7 T8 T13  306 end ==> MISSING_ELSE 307 end 308 309 LP_PWRUP: begin 310 1/1 if (pwrup_timer_cnt_q != cfg_pwrup_time_i) begin Tests: T7 T8 T13  311 1/1 pwrup_timer_cnt_en = 1'b1; Tests: T7 T8 T13  312 end 313 1/1 else if (pwrup_timer_cnt_q == cfg_pwrup_time_i) begin Tests: T7 T8 T13  314 1/1 pwrup_timer_cnt_clr = 1'b1; Tests: T7 T8 T13  315 1/1 fsm_state_d = LP_0; Tests: T7 T8 T13  316 end ==> MISSING_ELSE 317 end 318 319 NP_0: begin 320 1/1 adc_chn_sel_o = 2'b01; Tests: T2 T3 T4  321 1/1 if (adc_d_val_i) begin//sample chn0 value Tests: T2 T3 T4  322 1/1 fsm_state_d = NP_021; Tests: T2 T3 T4  323 end MISSING_ELSE 324 end 325 326 NP_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 327 1/1 if (!adc_d_val_i) begin Tests: T2 T3 T4  328 1/1 fsm_state_d = NP_1; Tests: T2 T3 T4  329 end MISSING_ELSE 330 end 331 332 NP_1: begin 333 1/1 adc_chn_sel_o = 2'b10; Tests: T2 T3 T4  334 1/1 if (adc_d_val_i) begin//sample chn1 value Tests: T2 T3 T4  335 1/1 fsm_state_d = NP_EVAL; Tests: T2 T3 T4  336 end MISSING_ELSE 337 end 338 339 NP_EVAL: begin 340 // do not transition forward until handshake with ADC is complete 341 1/1 if (!adc_d_val_i) begin Tests: T2 T3 T4  342 1/1 ld_match = 1'b1; Tests: T2 T3 T4  343 // if there is no match in normal power mode, clear counter and begin sampling again. 344 // if there is no match and low power mode is enabled, clear counter and go back to LP_0. 345 // 346 // if there is a match, there are 3 conditions: 347 // 1. the sample count is less than the threshold -> still attempting to make a new match, 348 // keep sampling. 349 // 2. the sample count is equal to the threshold -> a new match has just been made, go to 350 // DONE. 351 // 3, the sample count is greater than the threshold -> this is a continued stable match, 352 // keep sampling. 353 1/1 if (!stay_match) begin Tests: T2 T3 T4  354 1/1 if (cfg_lp_mode_i) begin Tests: T2 T4 T10  355 1/1 fsm_state_d = LP_0; Tests: T13 T15 T20  356 end else begin 357 1/1 fsm_state_d = NP_0; Tests: T2 T4 T10  358 end 359 1/1 np_sample_cnt_clr = 1'b1; Tests: T2 T4 T10  360 1/1 end else if (np_sample_cnt_q < np_sample_cnt_thresh) begin Tests: T3 T8 T12  361 1/1 fsm_state_d = NP_0; Tests: T3 T8 T12  362 1/1 np_sample_cnt_en = 1'b1; Tests: T3 T8 T12  363 1/1 end else if (np_sample_cnt_q == np_sample_cnt_thresh) begin Tests: T8 T12 T13  364 1/1 fsm_state_d = NP_DONE; Tests: T8 T12 T13  365 1/1 np_sample_cnt_en = 1'b1; Tests: T8 T12 T13  366 1/1 end else if (np_sample_cnt_q > np_sample_cnt_thresh) begin Tests: T8 T12 T13  367 1/1 fsm_state_d = NP_0; Tests: T8 T12 T13  368 end ==> MISSING_ELSE 369 end MISSING_ELSE 370 end 371 372 // delay done assertion by one cycle to match with channel register timing 373 NP_DONE: begin 374 1/1 adc_ctrl_done_o = 1'b1; Tests: T8 T12 T13  375 1/1 fsm_state_d = NP_0; Tests: T8 T12 T13  376 end 377 378 default: fsm_state_d = PWRDN;

Cond Coverage for Module : adc_ctrl_fsm
TotalCoveredPercent
Conditions959296.84
Logical959296.84
Non-Logical00
Event00

 LINE       71
 EXPRESSION ((trigger_q == 1'b0) && (cfg_adc_enable_i == 1'b1))
             ---------1---------    -------------2------------
-1--2-StatusTests
01CoveredT2,T3,T4
10CoveredT1,T2,T3
11CoveredT2,T3,T4

 LINE       71
 SUB-EXPRESSION (trigger_q == 1'b0)
                ---------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       71
 SUB-EXPRESSION (cfg_adc_enable_i == 1'b1)
                -------------1------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       72
 EXPRESSION ((trigger_q == 1'b1) && (cfg_adc_enable_i == 1'b0))
             ---------1---------    -------------2------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT2,T3,T4
11CoveredT2,T4,T5

 LINE       72
 SUB-EXPRESSION (trigger_q == 1'b1)
                ---------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       72
 SUB-EXPRESSION (cfg_adc_enable_i == 1'b0)
                -------------1------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       74
 EXPRESSION (pwrup_timer_cnt_en ? ((pwrup_timer_cnt_q + 1'b1)) : pwrup_timer_cnt_q)
             ---------1--------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       80
 EXPRESSION (pwrup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l)
             ---------1---------    ------2------    -----3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T4,T5
010CoveredT12,T13,T15
100CoveredT2,T3,T4

 LINE       87
 EXPRESSION (lp_sample_cnt_en ? ((lp_sample_cnt_q + 1'b1)) : lp_sample_cnt_q)
             --------1-------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT8,T13,T14

 LINE       93
 EXPRESSION (lp_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l)
             --------1--------    ------2------    -----3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T4,T5
010CoveredT12,T13,T15
100CoveredT7,T8,T13

 LINE       100
 EXPRESSION (np_sample_cnt_en ? ((np_sample_cnt_q + 1'b1)) : np_sample_cnt_q)
             --------1-------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T8,T12

 LINE       106
 EXPRESSION (np_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l)
             --------1--------    ------2------    -----3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T4,T5
010CoveredT12,T13,T15
100CoveredT2,T4,T10

 LINE       113
 EXPRESSION (wakeup_timer_cnt_en ? ((wakeup_timer_cnt_q + 1'b1)) : wakeup_timer_cnt_q)
             ---------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT7,T8,T13

 LINE       120
 EXPRESSION (wakeup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l)
             ----------1---------    ------2------    -----3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T4,T5
010CoveredT12,T13,T15
100CoveredT7,T8,T13

 LINE       127
 EXPRESSION ((fsm_state_q == ONEST_0) || (fsm_state_q == LP_0) || (fsm_state_q == NP_0))
             ------------1-----------    ----------2----------    ----------3----------
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T3,T4
010CoveredT7,T8,T13
100CoveredT2,T4,T5

 LINE       127
 SUB-EXPRESSION (fsm_state_q == ONEST_0)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T4,T5

 LINE       127
 SUB-EXPRESSION (fsm_state_q == LP_0)
                ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT7,T8,T13

 LINE       127
 SUB-EXPRESSION (fsm_state_q == NP_0)
                ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       128
 EXPRESSION (fsm_chn0_sel && adc_d_val_i)
             ------1-----    -----2-----
-1--2-StatusTests
01CoveredT2,T3,T4
10CoveredT2,T3,T4
11CoveredT2,T3,T4

 LINE       129
 EXPRESSION (chn0_val_we_d ? adc_d_i : chn0_val_o)
             ------1------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       131
 EXPRESSION ((fsm_state_q == ONEST_1) || (fsm_state_q == LP_1) || (fsm_state_q == NP_1))
             ------------1-----------    ----------2----------    ----------3----------
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T3,T4
010CoveredT7,T8,T13
100CoveredT2,T4,T5

 LINE       131
 SUB-EXPRESSION (fsm_state_q == ONEST_1)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T4,T5

 LINE       131
 SUB-EXPRESSION (fsm_state_q == LP_1)
                ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT7,T8,T13

 LINE       131
 SUB-EXPRESSION (fsm_state_q == NP_1)
                ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       132
 EXPRESSION (fsm_chn1_sel && adc_d_val_i)
             ------1-----    -----2-----
-1--2-StatusTests
01CoveredT2,T3,T4
10CoveredT2,T3,T4
11CoveredT2,T3,T4

 LINE       133
 EXPRESSION (chn1_val_we_d ? adc_d_i : chn1_val_o)
             ------1------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       169
 EXPRESSION (((|adc_ctrl_match_i)) & ((adc_ctrl_match_i == adc_ctrl_match_q) | ((~|adc_ctrl_match_q))))
             ----------1----------   --------------------------------2--------------------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT12,T14,T15
11CoveredT3,T8,T12

 LINE       169
 SUB-EXPRESSION ((adc_ctrl_match_i == adc_ctrl_match_q) | ((~|adc_ctrl_match_q)))
                 -------------------1------------------   -----------2----------
-1--2-StatusTests
00CoveredT12,T13,T14
01CoveredT3,T8,T12
10CoveredT3,T8,T12

 LINE       169
 SUB-EXPRESSION (adc_ctrl_match_i == adc_ctrl_match_q)
                -------------------1------------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       179
 EXPRESSION (trigger_h2l || cfg_fsm_rst_i)
             -----1-----    ------2------
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT12,T13,T15
10CoveredT2,T4,T5

 LINE       216
 EXPRESSION (pwrup_timer_cnt_q != cfg_pwrup_time_i)
            -------------------1-------------------
-1-StatusTests
0CoveredT2,T3,T4
1CoveredT2,T3,T4

 LINE       219
 EXPRESSION (pwrup_timer_cnt_q == cfg_pwrup_time_i)
            -------------------1-------------------
-1-StatusTests
0Not Covered
1CoveredT2,T3,T4

 LINE       290
 EXPRESSION (lp_sample_cnt_q == lp_sample_cnt_thresh)
            --------------------1--------------------
-1-StatusTests
0CoveredT14,T55,T56
1CoveredT8,T13,T14

 LINE       300
 EXPRESSION (wakeup_timer_cnt_q != cfg_wakeup_time_i)
            --------------------1--------------------
-1-StatusTests
0CoveredT7,T8,T13
1CoveredT7,T8,T13

 LINE       303
 EXPRESSION (wakeup_timer_cnt_q == cfg_wakeup_time_i)
            --------------------1--------------------
-1-StatusTests
0Not Covered
1CoveredT7,T8,T13

 LINE       310
 EXPRESSION (pwrup_timer_cnt_q != cfg_pwrup_time_i)
            -------------------1-------------------
-1-StatusTests
0CoveredT7,T8,T13
1CoveredT7,T8,T13

 LINE       313
 EXPRESSION (pwrup_timer_cnt_q == cfg_pwrup_time_i)
            -------------------1-------------------
-1-StatusTests
0Not Covered
1CoveredT7,T8,T13

 LINE       363
 EXPRESSION (np_sample_cnt_q == np_sample_cnt_thresh)
            --------------------1--------------------
-1-StatusTests
0CoveredT8,T12,T13
1CoveredT8,T12,T13

FSM Coverage for Module : adc_ctrl_fsm
Summary for FSM :: fsm_state_q
TotalCoveredPercent
States 17 17 100.00 (Not included in score)
Transitions 37 37 100.00
Sequences 0 0

State, Transition and Sequence Details for FSM :: fsm_state_q
statesLine No.CoveredTests
LP_0 225 Covered T7,T8,T13
LP_021 263 Covered T7,T8,T13
LP_1 269 Covered T7,T8,T13
LP_EVAL 276 Covered T7,T8,T13
LP_PWRUP 304 Covered T7,T8,T13
LP_SLP 285 Covered T7,T8,T13
NP_0 228 Covered T2,T3,T4
NP_021 322 Covered T2,T3,T4
NP_1 328 Covered T2,T3,T4
NP_DONE 364 Covered T8,T12,T13
NP_EVAL 335 Covered T2,T3,T4
ONEST_0 222 Covered T2,T4,T5
ONEST_021 236 Covered T2,T4,T5
ONEST_1 242 Covered T2,T4,T5
ONEST_DONE 249 Covered T2,T4,T5
PWRDN 180 Covered T1,T2,T3
PWRUP 211 Covered T2,T3,T4


transitionsLine No.CoveredTests
LP_0->LP_021 263 Covered T7,T8,T13
LP_0->PWRDN 180 Covered T8,T14,T15
LP_021->LP_1 269 Covered T7,T8,T13
LP_021->PWRDN 180 Covered T55,T57,T58
LP_1->LP_EVAL 276 Covered T7,T8,T13
LP_1->PWRDN 180 Covered T56,T57,T59
LP_EVAL->LP_SLP 285 Covered T7,T8,T13
LP_EVAL->NP_0 291 Covered T8,T13,T14
LP_EVAL->PWRDN 180 Covered T7,T14,T38
LP_PWRUP->LP_0 315 Covered T7,T8,T13
LP_PWRUP->PWRDN 180 Covered T14,T20,T60
LP_SLP->LP_PWRUP 304 Covered T7,T8,T13
LP_SLP->PWRDN 180 Covered T7,T38,T39
NP_0->NP_021 322 Covered T2,T3,T4
NP_0->PWRDN 180 Covered T2,T4,T10
NP_021->NP_1 328 Covered T2,T3,T4
NP_021->PWRDN 180 Covered T49,T60,T56
NP_1->NP_EVAL 335 Covered T2,T3,T4
NP_1->PWRDN 180 Covered T3,T8,T49
NP_DONE->NP_0 375 Covered T8,T12,T13
NP_DONE->PWRDN 180 Covered T56,T57,T61
NP_EVAL->LP_0 355 Covered T13,T15,T20
NP_EVAL->NP_0 357 Covered T2,T3,T4
NP_EVAL->NP_DONE 364 Covered T8,T12,T13
NP_EVAL->PWRDN 180 Covered T2,T3,T4
ONEST_0->ONEST_021 236 Covered T2,T4,T5
ONEST_0->PWRDN 180 Covered T14,T40,T18
ONEST_021->ONEST_1 242 Covered T2,T4,T5
ONEST_021->PWRDN 180 Covered T40,T60,T55
ONEST_1->ONEST_DONE 249 Covered T2,T4,T5
ONEST_1->PWRDN 180 Covered T55,T56,T57
ONEST_DONE->PWRDN 180 Covered T2,T4,T5
PWRDN->PWRUP 211 Covered T2,T3,T4
PWRUP->LP_0 225 Covered T7,T8,T13
PWRUP->NP_0 228 Covered T2,T3,T4
PWRUP->ONEST_0 222 Covered T2,T4,T5
PWRUP->PWRDN 180 Covered T18,T48,T60



Branch Coverage for Module : adc_ctrl_fsm
Line No.TotalCoveredPercent
Branches 84 78 92.86
TERNARY 74 2 2 100.00
TERNARY 87 2 2 100.00
TERNARY 100 2 2 100.00
TERNARY 113 2 2 100.00
TERNARY 129 2 2 100.00
TERNARY 133 2 2 100.00
IF 61 3 3 100.00
IF 77 3 3 100.00
IF 90 3 3 100.00
IF 103 3 3 100.00
IF 117 3 3 100.00
IF 136 3 3 100.00
IF 157 4 4 100.00
IF 176 3 3 100.00
CASE 207 47 41 87.23


74 assign pwrup_timer_cnt_d = (pwrup_timer_cnt_en) ? pwrup_timer_cnt_q + 1'b1 : pwrup_timer_cnt_q; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T2,T3,T4
0 Covered T1,T2,T3


87 assign lp_sample_cnt_d = (lp_sample_cnt_en) ? lp_sample_cnt_q + 1'b1 : lp_sample_cnt_q; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T8,T13,T14
0 Covered T1,T2,T3


100 assign np_sample_cnt_d = (np_sample_cnt_en) ? np_sample_cnt_q + 1'b1 : np_sample_cnt_q; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T3,T8,T12
0 Covered T1,T2,T3


113 assign wakeup_timer_cnt_d = (wakeup_timer_cnt_en) ? -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T7,T8,T13
0 Covered T1,T2,T3


129 assign chn0_val_d = (chn0_val_we_d) ? adc_d_i : chn0_val_o; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T2,T3,T4
0 Covered T1,T2,T3


133 assign chn1_val_d = (chn1_val_we_d) ? adc_d_i : chn1_val_o; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T2,T3,T4
0 Covered T1,T2,T3


61 if (!rst_aon_ni) begin -1- 62 trigger_q <= 1'b0; ==> 63 end 64 else if (cfg_fsm_rst_i) begin -2- 65 trigger_q <= 1'b0; ==> 66 end else begin 67 trigger_q <= cfg_adc_enable_i; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T12,T13,T15
0 0 Covered T1,T2,T3


77 if (!rst_aon_ni) begin -1- 78 pwrup_timer_cnt_q <= '0; ==> 79 end 80 else if (pwrup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin -2- 81 pwrup_timer_cnt_q <= '0; ==> 82 end else begin 83 pwrup_timer_cnt_q <= pwrup_timer_cnt_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T2,T3,T4
0 0 Covered T1,T2,T3


90 if (!rst_aon_ni) begin -1- 91 lp_sample_cnt_q <= '0; ==> 92 end 93 else if (lp_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin -2- 94 lp_sample_cnt_q <= '0; ==> 95 end else begin 96 lp_sample_cnt_q <= lp_sample_cnt_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T2,T4,T5
0 0 Covered T1,T2,T3


103 if (!rst_aon_ni) begin -1- 104 np_sample_cnt_q <= '0; ==> 105 end 106 else if (np_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin -2- 107 np_sample_cnt_q <= '0; ==> 108 end else begin 109 np_sample_cnt_q <= np_sample_cnt_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T2,T4,T5
0 0 Covered T1,T2,T3


117 if (!rst_aon_ni) begin -1- 118 wakeup_timer_cnt_q <= '0; ==> 119 end 120 else if (wakeup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin -2- 121 wakeup_timer_cnt_q <= '0; ==> 122 end else begin 123 wakeup_timer_cnt_q <= wakeup_timer_cnt_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T2,T4,T5
0 0 Covered T1,T2,T3


136 if (!rst_aon_ni) begin -1- 137 chn0_val_we_o <= '0; ==> 138 chn1_val_we_o <= '0; 139 chn0_val_o <= '0; 140 chn1_val_o <= '0; 141 end 142 else if (cfg_fsm_rst_i) begin -2- 143 chn0_val_we_o <= '0; ==> 144 chn1_val_we_o <= '0; 145 chn0_val_o <= '0; 146 chn1_val_o <= '0; 147 end else begin 148 chn0_val_we_o <= chn0_val_we_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T12,T13,T15
0 0 Covered T1,T2,T3


157 if (!rst_aon_ni) begin -1- 158 adc_ctrl_match_q <= '0; ==> 159 end 160 else if (cfg_fsm_rst_i) begin -2- 161 adc_ctrl_match_q <= '0; ==> 162 end 163 else if (ld_match) begin -3- 164 adc_ctrl_match_q <= adc_ctrl_match_i; ==> 165 end MISSING_ELSE ==>

Branches:
-1--2--3-StatusTests
1 - - Covered T1,T2,T3
0 1 - Covered T12,T13,T15
0 0 1 Covered T2,T3,T4
0 0 0 Covered T1,T2,T3


176 if (!rst_aon_ni) begin -1- 177 fsm_state_q <= PWRDN; ==> 178 end 179 else if (trigger_h2l || cfg_fsm_rst_i) begin -2- 180 fsm_state_q <= PWRDN; ==> 181 end else begin 182 fsm_state_q <= fsm_state_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T2,T4,T5
0 0 Covered T1,T2,T3


207 unique case (fsm_state_q) -1- 208 PWRDN: begin 209 adc_pd_o = 1'b1; 210 if (trigger_l2h) begin -2- 211 fsm_state_d = PWRUP; ==> 212 end MISSING_ELSE ==> 213 end 214 215 PWRUP: begin 216 if (pwrup_timer_cnt_q != cfg_pwrup_time_i) begin -3- 217 pwrup_timer_cnt_en = 1'b1; ==> 218 end 219 else if (pwrup_timer_cnt_q == cfg_pwrup_time_i) begin -4- 220 pwrup_timer_cnt_clr = 1'b1; 221 if (cfg_oneshot_mode_i) begin -5- 222 fsm_state_d = ONEST_0; ==> 223 end 224 else if (cfg_lp_mode_i) begin -6- 225 fsm_state_d = LP_0; ==> 226 end 227 else if (!cfg_lp_mode_i) begin -7- 228 fsm_state_d = NP_0; ==> 229 end MISSING_ELSE ==> 230 end MISSING_ELSE ==> 231 end 232 233 ONEST_0: begin 234 adc_chn_sel_o = 2'b01; 235 if (adc_d_val_i) begin//sample chn0 value -8- 236 fsm_state_d = ONEST_021; ==> 237 end MISSING_ELSE ==> 238 end 239 240 ONEST_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 241 if (!adc_d_val_i) begin -9- 242 fsm_state_d = ONEST_1; ==> 243 end MISSING_ELSE ==> 244 end 245 246 ONEST_1: begin 247 adc_chn_sel_o = 2'b10; 248 if (adc_d_val_i) begin//sample chn1 value -10- 249 fsm_state_d = ONEST_DONE; ==> 250 end MISSING_ELSE ==> 251 end 252 253 // delay done assertion by one cycle to match 254 // adc capture register timing 255 ONEST_DONE: begin 256 oneshot_done_o = 1'b1; ==> 257 fsm_state_d = PWRDN; 258 end 259 260 LP_0: begin 261 adc_chn_sel_o = 2'b01; 262 if (adc_d_val_i) begin//sample chn0 value -11- 263 fsm_state_d = LP_021; ==> 264 end MISSING_ELSE ==> 265 end 266 267 LP_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 268 if (!adc_d_val_i) begin -12- 269 fsm_state_d = LP_1; ==> 270 end MISSING_ELSE ==> 271 end 272 273 LP_1: begin 274 adc_chn_sel_o = 2'b10; 275 if (adc_d_val_i) begin//sample chn1 value -13- 276 fsm_state_d = LP_EVAL; ==> 277 end MISSING_ELSE ==> 278 end 279 280 LP_EVAL: begin 281 // do not transition forward until handshake with ADC is complete 282 if (!adc_d_val_i) begin -14- 283 ld_match = 1'b1; 284 if (!stay_match) begin -15- 285 fsm_state_d = LP_SLP; ==> 286 lp_sample_cnt_clr = 1'b1; 287 end else if (lp_sample_cnt_q < lp_sample_cnt_thresh) begin -16- 288 fsm_state_d = LP_SLP; ==> 289 lp_sample_cnt_en = 1'b1; 290 end else if (lp_sample_cnt_q == lp_sample_cnt_thresh) begin -17- 291 fsm_state_d = NP_0; ==> 292 lp_sample_cnt_clr = 1'b1; 293 aon_fsm_trans_o = 1'b1; 294 end MISSING_ELSE ==> 295 end MISSING_ELSE ==> 296 end 297 298 LP_SLP: begin 299 adc_pd_o = 1'b1; 300 if (wakeup_timer_cnt_q != cfg_wakeup_time_i) begin -18- 301 wakeup_timer_cnt_en = 1'b1; ==> 302 end 303 else if (wakeup_timer_cnt_q == cfg_wakeup_time_i) begin -19- 304 fsm_state_d = LP_PWRUP; ==> 305 wakeup_timer_cnt_clr = 1'b1; 306 end MISSING_ELSE ==> 307 end 308 309 LP_PWRUP: begin 310 if (pwrup_timer_cnt_q != cfg_pwrup_time_i) begin -20- 311 pwrup_timer_cnt_en = 1'b1; ==> 312 end 313 else if (pwrup_timer_cnt_q == cfg_pwrup_time_i) begin -21- 314 pwrup_timer_cnt_clr = 1'b1; ==> 315 fsm_state_d = LP_0; 316 end MISSING_ELSE ==> 317 end 318 319 NP_0: begin 320 adc_chn_sel_o = 2'b01; 321 if (adc_d_val_i) begin//sample chn0 value -22- 322 fsm_state_d = NP_021; ==> 323 end MISSING_ELSE ==> 324 end 325 326 NP_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 327 if (!adc_d_val_i) begin -23- 328 fsm_state_d = NP_1; ==> 329 end MISSING_ELSE ==> 330 end 331 332 NP_1: begin 333 adc_chn_sel_o = 2'b10; 334 if (adc_d_val_i) begin//sample chn1 value -24- 335 fsm_state_d = NP_EVAL; ==> 336 end MISSING_ELSE ==> 337 end 338 339 NP_EVAL: begin 340 // do not transition forward until handshake with ADC is complete 341 if (!adc_d_val_i) begin -25- 342 ld_match = 1'b1; 343 // if there is no match in normal power mode, clear counter and begin sampling again. 344 // if there is no match and low power mode is enabled, clear counter and go back to LP_0. 345 // 346 // if there is a match, there are 3 conditions: 347 // 1. the sample count is less than the threshold -> still attempting to make a new match, 348 // keep sampling. 349 // 2. the sample count is equal to the threshold -> a new match has just been made, go to 350 // DONE. 351 // 3, the sample count is greater than the threshold -> this is a continued stable match, 352 // keep sampling. 353 if (!stay_match) begin -26- 354 if (cfg_lp_mode_i) begin -27- 355 fsm_state_d = LP_0; ==> 356 end else begin 357 fsm_state_d = NP_0; ==> 358 end 359 np_sample_cnt_clr = 1'b1; 360 end else if (np_sample_cnt_q < np_sample_cnt_thresh) begin -28- 361 fsm_state_d = NP_0; ==> 362 np_sample_cnt_en = 1'b1; 363 end else if (np_sample_cnt_q == np_sample_cnt_thresh) begin -29- 364 fsm_state_d = NP_DONE; ==> 365 np_sample_cnt_en = 1'b1; 366 end else if (np_sample_cnt_q > np_sample_cnt_thresh) begin -30- 367 fsm_state_d = NP_0; ==> 368 end MISSING_ELSE ==> 369 end MISSING_ELSE ==> 370 end 371 372 // delay done assertion by one cycle to match with channel register timing 373 NP_DONE: begin 374 adc_ctrl_done_o = 1'b1; ==> 375 fsm_state_d = NP_0; 376 end 377 378 default: fsm_state_d = PWRDN; ==>

Branches:
-1--2--3--4--5--6--7--8--9--10--11--12--13--14--15--16--17--18--19--20--21--22--23--24--25--26--27--28--29--30-StatusTests
PWRDN 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
PWRDN 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - Covered T1,T2,T3
PWRUP - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
PWRUP - 0 1 1 - - - - - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
PWRUP - 0 1 0 1 - - - - - - - - - - - - - - - - - - - - - - - - Covered T7,T8,T13
PWRUP - 0 1 0 0 1 - - - - - - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
PWRUP - 0 1 0 0 0 - - - - - - - - - - - - - - - - - - - - - - - Not Covered
PWRUP - 0 0 - - - - - - - - - - - - - - - - - - - - - - - - - - Not Covered
ONEST_0 - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_0 - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_021 - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_021 - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_1 - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_1 - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_DONE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
LP_0 - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_0 - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_021 - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_021 - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_1 - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_1 - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_EVAL - - - - - - - - - - - - 1 1 - - - - - - - - - - - - - - - Covered T7,T13,T14
LP_EVAL - - - - - - - - - - - - 1 0 1 - - - - - - - - - - - - - - Covered T8,T13,T14
LP_EVAL - - - - - - - - - - - - 1 0 0 1 - - - - - - - - - - - - - Covered T8,T13,T14
LP_EVAL - - - - - - - - - - - - 1 0 0 0 - - - - - - - - - - - - - Covered T14,T55,T56
LP_EVAL - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_SLP - - - - - - - - - - - - - - - - 1 - - - - - - - - - - - - Covered T7,T8,T13
LP_SLP - - - - - - - - - - - - - - - - 0 1 - - - - - - - - - - - Covered T7,T8,T13
LP_SLP - - - - - - - - - - - - - - - - 0 0 - - - - - - - - - - - Not Covered
LP_PWRUP - - - - - - - - - - - - - - - - - - 1 - - - - - - - - - - Covered T7,T8,T13
LP_PWRUP - - - - - - - - - - - - - - - - - - 0 1 - - - - - - - - - Covered T7,T8,T13
LP_PWRUP - - - - - - - - - - - - - - - - - - 0 0 - - - - - - - - - Not Covered
NP_0 - - - - - - - - - - - - - - - - - - - - 1 - - - - - - - - Covered T2,T3,T4
NP_0 - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - Covered T2,T3,T4
NP_021 - - - - - - - - - - - - - - - - - - - - - 1 - - - - - - - Covered T2,T3,T4
NP_021 - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - Covered T2,T3,T4
NP_1 - - - - - - - - - - - - - - - - - - - - - - 1 - - - - - - Covered T2,T3,T4
NP_1 - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - Covered T2,T3,T4
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 1 1 - - - Covered T13,T15,T20
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 1 0 - - - Covered T2,T4,T10
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 0 - 1 - - Covered T3,T8,T12
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 0 - 0 1 - Covered T8,T12,T13
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 0 - 0 0 1 Covered T8,T12,T13
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 0 - 0 0 0 Not Covered
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - Covered T2,T3,T4
NP_DONE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Covered T8,T12,T13
default - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Not Covered


Assert Coverage for Module : adc_ctrl_fsm
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 4 4 100.00 4 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 4 4 100.00 4 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
LpSampleCntCfg_M 31070228 30997539 0 0
NpCntClrMisMatch_A 31070228 152045 0 0
NpCntClrPwrDn_A 31070228 87916 0 0
NpSampleCntCfg_M 31070228 30997539 0 0


LpSampleCntCfg_M
NameAttemptsReal SuccessesFailuresIncomplete
Total 31070228 30997539 0 0
T1 82 1 0 0
T2 1139 1053 0 0
T3 308 136 0 0
T4 749 676 0 0
T5 1107 1028 0 0
T6 1227 1139 0 0
T7 7255 7183 0 0
T8 63 1 0 0
T21 83 1 0 0
T22 90 1 0 0

NpCntClrMisMatch_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 31070228 152045 0 0
T2 1139 10 0 0
T3 308 0 0 0
T4 749 7 0 0
T5 1107 0 0 0
T6 1227 0 0 0
T7 7255 51 0 0
T8 63 0 0 0
T9 1129 0 0 0
T10 0 3 0 0
T12 0 1029 0 0
T13 0 129 0 0
T21 83 0 0 0
T22 90 0 0 0
T27 0 10 0 0
T38 0 39 0 0
T39 0 36 0 0
T42 0 54 0 0

NpCntClrPwrDn_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 31070228 87916 0 0
T1 82 1 0 0
T2 1139 123 0 0
T3 308 19 0 0
T4 749 79 0 0
T5 1107 241 0 0
T6 1227 241 0 0
T7 7255 78 0 0
T8 63 1 0 0
T21 83 1 0 0
T22 90 1 0 0

NpSampleCntCfg_M
NameAttemptsReal SuccessesFailuresIncomplete
Total 31070228 30997539 0 0
T1 82 1 0 0
T2 1139 1053 0 0
T3 308 136 0 0
T4 749 676 0 0
T5 1107 1028 0 0
T6 1227 1139 0 0
T7 7255 7183 0 0
T8 63 1 0 0
T21 83 1 0 0
T22 90 1 0 0

Line Coverage for Instance : tb.dut.u_adc_ctrl_core.u_adc_ctrl_fsm
Line No.TotalCoveredPercent
TOTAL162162100.00
CONT_ASSIGN5811100.00
ALWAYS6155100.00
CONT_ASSIGN7111100.00
CONT_ASSIGN7211100.00
CONT_ASSIGN7411100.00
ALWAYS7755100.00
CONT_ASSIGN8711100.00
ALWAYS9055100.00
CONT_ASSIGN10011100.00
ALWAYS10355100.00
CONT_ASSIGN11311100.00
ALWAYS11755100.00
CONT_ASSIGN12711100.00
CONT_ASSIGN12811100.00
CONT_ASSIGN12911100.00
CONT_ASSIGN13111100.00
CONT_ASSIGN13211100.00
CONT_ASSIGN13311100.00
ALWAYS1361414100.00
ALWAYS15766100.00
CONT_ASSIGN16911100.00
CONT_ASSIGN17311100.00
ALWAYS17655100.00
CONT_ASSIGN18611100.00
CONT_ASSIGN18711100.00
ALWAYS1909595100.00

57 fsm_state_e fsm_state_q, fsm_state_d; 58 1/1 assign aon_fsm_state_o = fsm_state_q; Tests: T1 T2 T3  59 60 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 61 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  62 1/1 trigger_q <= 1'b0; Tests: T1 T2 T3  63 end 64 1/1 else if (cfg_fsm_rst_i) begin Tests: T1 T2 T3  65 1/1 trigger_q <= 1'b0; Tests: T12 T13 T15  66 end else begin 67 1/1 trigger_q <= cfg_adc_enable_i; Tests: T1 T2 T3  68 end 69 end 70 71 1/1 assign trigger_l2h = (trigger_q == 1'b0) && (cfg_adc_enable_i == 1'b1); Tests: T1 T2 T3  72 1/1 assign trigger_h2l = (trigger_q == 1'b1) && (cfg_adc_enable_i == 1'b0); Tests: T1 T2 T3  73 74 1/1 assign pwrup_timer_cnt_d = (pwrup_timer_cnt_en) ? pwrup_timer_cnt_q + 1'b1 : pwrup_timer_cnt_q; Tests: T1 T2 T3  75 76 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 77 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  78 1/1 pwrup_timer_cnt_q <= '0; Tests: T1 T2 T3  79 end 80 1/1 else if (pwrup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin Tests: T1 T2 T3  81 1/1 pwrup_timer_cnt_q <= '0; Tests: T2 T3 T4  82 end else begin 83 1/1 pwrup_timer_cnt_q <= pwrup_timer_cnt_d; Tests: T1 T2 T3  84 end 85 end 86 87 1/1 assign lp_sample_cnt_d = (lp_sample_cnt_en) ? lp_sample_cnt_q + 1'b1 : lp_sample_cnt_q; Tests: T1 T2 T3  88 89 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 90 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  91 1/1 lp_sample_cnt_q <= '0; Tests: T1 T2 T3  92 end 93 1/1 else if (lp_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin Tests: T1 T2 T3  94 1/1 lp_sample_cnt_q <= '0; Tests: T2 T4 T5  95 end else begin 96 1/1 lp_sample_cnt_q <= lp_sample_cnt_d; Tests: T1 T2 T3  97 end 98 end 99 100 1/1 assign np_sample_cnt_d = (np_sample_cnt_en) ? np_sample_cnt_q + 1'b1 : np_sample_cnt_q; Tests: T1 T2 T3  101 102 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 103 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  104 1/1 np_sample_cnt_q <= '0; Tests: T1 T2 T3  105 end 106 1/1 else if (np_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin Tests: T1 T2 T3  107 1/1 np_sample_cnt_q <= '0; Tests: T2 T4 T5  108 end else begin 109 1/1 np_sample_cnt_q <= np_sample_cnt_d; Tests: T1 T2 T3  110 end 111 end 112 113 1/1 assign wakeup_timer_cnt_d = (wakeup_timer_cnt_en) ? Tests: T1 T2 T3  114 wakeup_timer_cnt_q + 1'b1 : wakeup_timer_cnt_q; 115 116 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 117 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  118 1/1 wakeup_timer_cnt_q <= '0; Tests: T1 T2 T3  119 end 120 1/1 else if (wakeup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin Tests: T1 T2 T3  121 1/1 wakeup_timer_cnt_q <= '0; Tests: T2 T4 T5  122 end else begin 123 1/1 wakeup_timer_cnt_q <= wakeup_timer_cnt_d; Tests: T1 T2 T3  124 end 125 end 126 127 1/1 assign fsm_chn0_sel = (fsm_state_q == ONEST_0) || (fsm_state_q == LP_0) || (fsm_state_q == NP_0); Tests: T1 T2 T3  128 1/1 assign chn0_val_we_d = fsm_chn0_sel && adc_d_val_i;//adc_d_val_i is a valid pulse Tests: T1 T2 T3  129 1/1 assign chn0_val_d = (chn0_val_we_d) ? adc_d_i : chn0_val_o; Tests: T1 T2 T3  130 131 1/1 assign fsm_chn1_sel = (fsm_state_q == ONEST_1) || (fsm_state_q == LP_1) || (fsm_state_q == NP_1); Tests: T1 T2 T3  132 1/1 assign chn1_val_we_d = fsm_chn1_sel && adc_d_val_i; Tests: T1 T2 T3  133 1/1 assign chn1_val_d = (chn1_val_we_d) ? adc_d_i : chn1_val_o; Tests: T1 T2 T3  134 135 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 136 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  137 1/1 chn0_val_we_o <= '0; Tests: T1 T2 T3  138 1/1 chn1_val_we_o <= '0; Tests: T1 T2 T3  139 1/1 chn0_val_o <= '0; Tests: T1 T2 T3  140 1/1 chn1_val_o <= '0; Tests: T1 T2 T3  141 end 142 1/1 else if (cfg_fsm_rst_i) begin Tests: T1 T2 T3  143 1/1 chn0_val_we_o <= '0; Tests: T12 T13 T15  144 1/1 chn1_val_we_o <= '0; Tests: T12 T13 T15  145 1/1 chn0_val_o <= '0; Tests: T12 T13 T15  146 1/1 chn1_val_o <= '0; Tests: T12 T13 T15  147 end else begin 148 1/1 chn0_val_we_o <= chn0_val_we_d; Tests: T1 T2 T3  149 1/1 chn1_val_we_o <= chn1_val_we_d; Tests: T1 T2 T3  150 1/1 chn0_val_o <= chn0_val_d; Tests: T1 T2 T3  151 1/1 chn1_val_o <= chn1_val_d; Tests: T1 T2 T3  152 end 153 end 154 155 logic ld_match; 156 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 157 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  158 1/1 adc_ctrl_match_q <= '0; Tests: T1 T2 T3  159 end 160 1/1 else if (cfg_fsm_rst_i) begin Tests: T1 T2 T3  161 1/1 adc_ctrl_match_q <= '0; Tests: T12 T13 T15  162 end 163 1/1 else if (ld_match) begin Tests: T1 T2 T3  164 1/1 adc_ctrl_match_q <= adc_ctrl_match_i; Tests: T2 T3 T4  165 end MISSING_ELSE 166 end 167 168 logic np_match; 169 1/1 assign np_match = |adc_ctrl_match_i & // if current match is non-zero Tests: T1 T2 T3  170 ((adc_ctrl_match_i == adc_ctrl_match_q) | // match if same as previous match 171 ~|adc_ctrl_match_q); // or match if previous match was zero 172 173 1/1 assign stay_match = np_match; Tests: T1 T2 T3  174 175 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 176 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  177 1/1 fsm_state_q <= PWRDN; Tests: T1 T2 T3  178 end 179 1/1 else if (trigger_h2l || cfg_fsm_rst_i) begin Tests: T1 T2 T3  180 1/1 fsm_state_q <= PWRDN; Tests: T2 T4 T5  181 end else begin 182 1/1 fsm_state_q <= fsm_state_d; Tests: T1 T2 T3  183 end 184 end 185 186 1/1 assign lp_sample_cnt_thresh = cfg_lp_sample_cnt_i - 1'b1; Tests: T1 T2 T3  187 1/1 assign np_sample_cnt_thresh = cfg_np_sample_cnt_i - 1'b1; Tests: T1 T2 T3  188 189 always_comb begin: adc_fsm 190 1/1 fsm_state_d = fsm_state_q; Tests: T1 T2 T3  191 //outputs 192 1/1 adc_chn_sel_o = 2'b0; Tests: T1 T2 T3  193 1/1 adc_pd_o = 1'b0;//default value Tests: T1 T2 T3  194 1/1 pwrup_timer_cnt_clr = 1'b0; Tests: T1 T2 T3  195 1/1 pwrup_timer_cnt_en = 1'b0; Tests: T1 T2 T3  196 1/1 lp_sample_cnt_clr = 1'b0; Tests: T1 T2 T3  197 1/1 lp_sample_cnt_en = 1'b0; Tests: T1 T2 T3  198 1/1 wakeup_timer_cnt_clr = 1'b0; Tests: T1 T2 T3  199 1/1 wakeup_timer_cnt_en = 1'b0; Tests: T1 T2 T3  200 1/1 np_sample_cnt_clr = 1'b0; Tests: T1 T2 T3  201 1/1 np_sample_cnt_en = 1'b0; Tests: T1 T2 T3  202 1/1 adc_ctrl_done_o = 1'b0; Tests: T1 T2 T3  203 1/1 oneshot_done_o = 1'b0; Tests: T1 T2 T3  204 1/1 ld_match = 1'b0; Tests: T1 T2 T3  205 1/1 aon_fsm_trans_o = 1'b0; Tests: T1 T2 T3  206 207 1/1 unique case (fsm_state_q) Tests: T1 T2 T3  208 PWRDN: begin 209 1/1 adc_pd_o = 1'b1; Tests: T1 T2 T3  210 1/1 if (trigger_l2h) begin Tests: T1 T2 T3  211 1/1 fsm_state_d = PWRUP; Tests: T2 T3 T4  212 end MISSING_ELSE 213 end 214 215 PWRUP: begin 216 1/1 if (pwrup_timer_cnt_q != cfg_pwrup_time_i) begin Tests: T2 T3 T4  217 1/1 pwrup_timer_cnt_en = 1'b1; Tests: T2 T3 T4  218 end 219 1/1 else if (pwrup_timer_cnt_q == cfg_pwrup_time_i) begin Tests: T2 T3 T4  220 1/1 pwrup_timer_cnt_clr = 1'b1; Tests: T2 T3 T4  221 1/1 if (cfg_oneshot_mode_i) begin Tests: T2 T3 T4  222 1/1 fsm_state_d = ONEST_0; Tests: T2 T4 T5  223 end 224 1/1 else if (cfg_lp_mode_i) begin Tests: T2 T3 T4  225 1/1 fsm_state_d = LP_0; Tests: T7 T8 T13  226 end 227 1/1 else if (!cfg_lp_mode_i) begin Tests: T2 T3 T4  228 1/1 fsm_state_d = NP_0; Tests: T2 T3 T4  229 end ==> MISSING_ELSE 230 end ==> MISSING_ELSE 231 end 232 233 ONEST_0: begin 234 1/1 adc_chn_sel_o = 2'b01; Tests: T2 T4 T5  235 1/1 if (adc_d_val_i) begin//sample chn0 value Tests: T2 T4 T5  236 1/1 fsm_state_d = ONEST_021; Tests: T2 T4 T5  237 end MISSING_ELSE 238 end 239 240 ONEST_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 241 1/1 if (!adc_d_val_i) begin Tests: T2 T4 T5  242 1/1 fsm_state_d = ONEST_1; Tests: T2 T4 T5  243 end MISSING_ELSE 244 end 245 246 ONEST_1: begin 247 1/1 adc_chn_sel_o = 2'b10; Tests: T2 T4 T5  248 1/1 if (adc_d_val_i) begin//sample chn1 value Tests: T2 T4 T5  249 1/1 fsm_state_d = ONEST_DONE; Tests: T2 T4 T5  250 end MISSING_ELSE 251 end 252 253 // delay done assertion by one cycle to match 254 // adc capture register timing 255 ONEST_DONE: begin 256 1/1 oneshot_done_o = 1'b1; Tests: T2 T4 T5  257 1/1 fsm_state_d = PWRDN; Tests: T2 T4 T5  258 end 259 260 LP_0: begin 261 1/1 adc_chn_sel_o = 2'b01; Tests: T7 T8 T13  262 1/1 if (adc_d_val_i) begin//sample chn0 value Tests: T7 T8 T13  263 1/1 fsm_state_d = LP_021; Tests: T7 T8 T13  264 end MISSING_ELSE 265 end 266 267 LP_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 268 1/1 if (!adc_d_val_i) begin Tests: T7 T8 T13  269 1/1 fsm_state_d = LP_1; Tests: T7 T8 T13  270 end MISSING_ELSE 271 end 272 273 LP_1: begin 274 1/1 adc_chn_sel_o = 2'b10; Tests: T7 T8 T13  275 1/1 if (adc_d_val_i) begin//sample chn1 value Tests: T7 T8 T13  276 1/1 fsm_state_d = LP_EVAL; Tests: T7 T8 T13  277 end MISSING_ELSE 278 end 279 280 LP_EVAL: begin 281 // do not transition forward until handshake with ADC is complete 282 1/1 if (!adc_d_val_i) begin Tests: T7 T8 T13  283 1/1 ld_match = 1'b1; Tests: T7 T8 T13  284 1/1 if (!stay_match) begin Tests: T7 T8 T13  285 1/1 fsm_state_d = LP_SLP; Tests: T7 T13 T14  286 1/1 lp_sample_cnt_clr = 1'b1; Tests: T7 T13 T14  287 1/1 end else if (lp_sample_cnt_q < lp_sample_cnt_thresh) begin Tests: T8 T13 T14  288 1/1 fsm_state_d = LP_SLP; Tests: T8 T13 T14  289 1/1 lp_sample_cnt_en = 1'b1; Tests: T8 T13 T14  290 1/1 end else if (lp_sample_cnt_q == lp_sample_cnt_thresh) begin Tests: T8 T13 T14  291 1/1 fsm_state_d = NP_0; Tests: T8 T13 T14  292 1/1 lp_sample_cnt_clr = 1'b1; Tests: T8 T13 T14  293 1/1 aon_fsm_trans_o = 1'b1; Tests: T8 T13 T14  294 end MISSING_ELSE 295 end MISSING_ELSE 296 end 297 298 LP_SLP: begin 299 1/1 adc_pd_o = 1'b1; Tests: T7 T8 T13  300 1/1 if (wakeup_timer_cnt_q != cfg_wakeup_time_i) begin Tests: T7 T8 T13  301 1/1 wakeup_timer_cnt_en = 1'b1; Tests: T7 T8 T13  302 end 303 1/1 else if (wakeup_timer_cnt_q == cfg_wakeup_time_i) begin Tests: T7 T8 T13  304 1/1 fsm_state_d = LP_PWRUP; Tests: T7 T8 T13  305 1/1 wakeup_timer_cnt_clr = 1'b1; Tests: T7 T8 T13  306 end ==> MISSING_ELSE 307 end 308 309 LP_PWRUP: begin 310 1/1 if (pwrup_timer_cnt_q != cfg_pwrup_time_i) begin Tests: T7 T8 T13  311 1/1 pwrup_timer_cnt_en = 1'b1; Tests: T7 T8 T13  312 end 313 1/1 else if (pwrup_timer_cnt_q == cfg_pwrup_time_i) begin Tests: T7 T8 T13  314 1/1 pwrup_timer_cnt_clr = 1'b1; Tests: T7 T8 T13  315 1/1 fsm_state_d = LP_0; Tests: T7 T8 T13  316 end ==> MISSING_ELSE 317 end 318 319 NP_0: begin 320 1/1 adc_chn_sel_o = 2'b01; Tests: T2 T3 T4  321 1/1 if (adc_d_val_i) begin//sample chn0 value Tests: T2 T3 T4  322 1/1 fsm_state_d = NP_021; Tests: T2 T3 T4  323 end MISSING_ELSE 324 end 325 326 NP_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 327 1/1 if (!adc_d_val_i) begin Tests: T2 T3 T4  328 1/1 fsm_state_d = NP_1; Tests: T2 T3 T4  329 end MISSING_ELSE 330 end 331 332 NP_1: begin 333 1/1 adc_chn_sel_o = 2'b10; Tests: T2 T3 T4  334 1/1 if (adc_d_val_i) begin//sample chn1 value Tests: T2 T3 T4  335 1/1 fsm_state_d = NP_EVAL; Tests: T2 T3 T4  336 end MISSING_ELSE 337 end 338 339 NP_EVAL: begin 340 // do not transition forward until handshake with ADC is complete 341 1/1 if (!adc_d_val_i) begin Tests: T2 T3 T4  342 1/1 ld_match = 1'b1; Tests: T2 T3 T4  343 // if there is no match in normal power mode, clear counter and begin sampling again. 344 // if there is no match and low power mode is enabled, clear counter and go back to LP_0. 345 // 346 // if there is a match, there are 3 conditions: 347 // 1. the sample count is less than the threshold -> still attempting to make a new match, 348 // keep sampling. 349 // 2. the sample count is equal to the threshold -> a new match has just been made, go to 350 // DONE. 351 // 3, the sample count is greater than the threshold -> this is a continued stable match, 352 // keep sampling. 353 1/1 if (!stay_match) begin Tests: T2 T3 T4  354 1/1 if (cfg_lp_mode_i) begin Tests: T2 T4 T10  355 1/1 fsm_state_d = LP_0; Tests: T13 T15 T20  356 end else begin 357 1/1 fsm_state_d = NP_0; Tests: T2 T4 T10  358 end 359 1/1 np_sample_cnt_clr = 1'b1; Tests: T2 T4 T10  360 1/1 end else if (np_sample_cnt_q < np_sample_cnt_thresh) begin Tests: T3 T8 T12  361 1/1 fsm_state_d = NP_0; Tests: T3 T8 T12  362 1/1 np_sample_cnt_en = 1'b1; Tests: T3 T8 T12  363 1/1 end else if (np_sample_cnt_q == np_sample_cnt_thresh) begin Tests: T8 T12 T13  364 1/1 fsm_state_d = NP_DONE; Tests: T8 T12 T13  365 1/1 np_sample_cnt_en = 1'b1; Tests: T8 T12 T13  366 1/1 end else if (np_sample_cnt_q > np_sample_cnt_thresh) begin Tests: T8 T12 T13  367 1/1 fsm_state_d = NP_0; Tests: T8 T12 T13  368 end ==> MISSING_ELSE 369 end MISSING_ELSE 370 end 371 372 // delay done assertion by one cycle to match with channel register timing 373 NP_DONE: begin 374 1/1 adc_ctrl_done_o = 1'b1; Tests: T8 T12 T13  375 1/1 fsm_state_d = NP_0; Tests: T8 T12 T13  376 end 377 378 default: fsm_state_d = PWRDN;

Cond Coverage for Instance : tb.dut.u_adc_ctrl_core.u_adc_ctrl_fsm
TotalCoveredPercent
Conditions9292100.00
Logical9292100.00
Non-Logical00
Event00

 LINE       71
 EXPRESSION ((trigger_q == 1'b0) && (cfg_adc_enable_i == 1'b1))
             ---------1---------    -------------2------------
-1--2-StatusTests
01CoveredT2,T3,T4
10CoveredT1,T2,T3
11CoveredT2,T3,T4

 LINE       71
 SUB-EXPRESSION (trigger_q == 1'b0)
                ---------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       71
 SUB-EXPRESSION (cfg_adc_enable_i == 1'b1)
                -------------1------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       72
 EXPRESSION ((trigger_q == 1'b1) && (cfg_adc_enable_i == 1'b0))
             ---------1---------    -------------2------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT2,T3,T4
11CoveredT2,T4,T5

 LINE       72
 SUB-EXPRESSION (trigger_q == 1'b1)
                ---------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       72
 SUB-EXPRESSION (cfg_adc_enable_i == 1'b0)
                -------------1------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       74
 EXPRESSION (pwrup_timer_cnt_en ? ((pwrup_timer_cnt_q + 1'b1)) : pwrup_timer_cnt_q)
             ---------1--------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       80
 EXPRESSION (pwrup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l)
             ---------1---------    ------2------    -----3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T4,T5
010CoveredT12,T13,T15
100CoveredT2,T3,T4

 LINE       87
 EXPRESSION (lp_sample_cnt_en ? ((lp_sample_cnt_q + 1'b1)) : lp_sample_cnt_q)
             --------1-------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT8,T13,T14

 LINE       93
 EXPRESSION (lp_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l)
             --------1--------    ------2------    -----3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T4,T5
010CoveredT12,T13,T15
100CoveredT7,T8,T13

 LINE       100
 EXPRESSION (np_sample_cnt_en ? ((np_sample_cnt_q + 1'b1)) : np_sample_cnt_q)
             --------1-------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T8,T12

 LINE       106
 EXPRESSION (np_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l)
             --------1--------    ------2------    -----3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T4,T5
010CoveredT12,T13,T15
100CoveredT2,T4,T10

 LINE       113
 EXPRESSION (wakeup_timer_cnt_en ? ((wakeup_timer_cnt_q + 1'b1)) : wakeup_timer_cnt_q)
             ---------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT7,T8,T13

 LINE       120
 EXPRESSION (wakeup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l)
             ----------1---------    ------2------    -----3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T4,T5
010CoveredT12,T13,T15
100CoveredT7,T8,T13

 LINE       127
 EXPRESSION ((fsm_state_q == ONEST_0) || (fsm_state_q == LP_0) || (fsm_state_q == NP_0))
             ------------1-----------    ----------2----------    ----------3----------
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T3,T4
010CoveredT7,T8,T13
100CoveredT2,T4,T5

 LINE       127
 SUB-EXPRESSION (fsm_state_q == ONEST_0)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T4,T5

 LINE       127
 SUB-EXPRESSION (fsm_state_q == LP_0)
                ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT7,T8,T13

 LINE       127
 SUB-EXPRESSION (fsm_state_q == NP_0)
                ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       128
 EXPRESSION (fsm_chn0_sel && adc_d_val_i)
             ------1-----    -----2-----
-1--2-StatusTests
01CoveredT2,T3,T4
10CoveredT2,T3,T4
11CoveredT2,T3,T4

 LINE       129
 EXPRESSION (chn0_val_we_d ? adc_d_i : chn0_val_o)
             ------1------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       131
 EXPRESSION ((fsm_state_q == ONEST_1) || (fsm_state_q == LP_1) || (fsm_state_q == NP_1))
             ------------1-----------    ----------2----------    ----------3----------
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T3,T4
010CoveredT7,T8,T13
100CoveredT2,T4,T5

 LINE       131
 SUB-EXPRESSION (fsm_state_q == ONEST_1)
                ------------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T4,T5

 LINE       131
 SUB-EXPRESSION (fsm_state_q == LP_1)
                ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT7,T8,T13

 LINE       131
 SUB-EXPRESSION (fsm_state_q == NP_1)
                ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       132
 EXPRESSION (fsm_chn1_sel && adc_d_val_i)
             ------1-----    -----2-----
-1--2-StatusTests
01CoveredT2,T3,T4
10CoveredT2,T3,T4
11CoveredT2,T3,T4

 LINE       133
 EXPRESSION (chn1_val_we_d ? adc_d_i : chn1_val_o)
             ------1------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       169
 EXPRESSION (((|adc_ctrl_match_i)) & ((adc_ctrl_match_i == adc_ctrl_match_q) | ((~|adc_ctrl_match_q))))
             ----------1----------   --------------------------------2--------------------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT12,T14,T15
11CoveredT3,T8,T12

 LINE       169
 SUB-EXPRESSION ((adc_ctrl_match_i == adc_ctrl_match_q) | ((~|adc_ctrl_match_q)))
                 -------------------1------------------   -----------2----------
-1--2-StatusTests
00CoveredT12,T13,T14
01CoveredT3,T8,T12
10CoveredT3,T8,T12

 LINE       169
 SUB-EXPRESSION (adc_ctrl_match_i == adc_ctrl_match_q)
                -------------------1------------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       179
 EXPRESSION (trigger_h2l || cfg_fsm_rst_i)
             -----1-----    ------2------
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT12,T13,T15
10CoveredT2,T4,T5

 LINE       216
 EXPRESSION (pwrup_timer_cnt_q != cfg_pwrup_time_i)
            -------------------1-------------------
-1-StatusTests
0CoveredT2,T3,T4
1CoveredT2,T3,T4

 LINE       219
 EXPRESSION (pwrup_timer_cnt_q == cfg_pwrup_time_i)
            -------------------1-------------------
-1-StatusTestsExclude Annotation
0Excluded VC_COV_UNR
1CoveredT2,T3,T4

 LINE       290
 EXPRESSION (lp_sample_cnt_q == lp_sample_cnt_thresh)
            --------------------1--------------------
-1-StatusTests
0CoveredT14,T55,T56
1CoveredT8,T13,T14

 LINE       300
 EXPRESSION (wakeup_timer_cnt_q != cfg_wakeup_time_i)
            --------------------1--------------------
-1-StatusTests
0CoveredT7,T8,T13
1CoveredT7,T8,T13

 LINE       303
 EXPRESSION (wakeup_timer_cnt_q == cfg_wakeup_time_i)
            --------------------1--------------------
-1-StatusTestsExclude Annotation
0Excluded VC_COV_UNR
1CoveredT7,T8,T13

 LINE       310
 EXPRESSION (pwrup_timer_cnt_q != cfg_pwrup_time_i)
            -------------------1-------------------
-1-StatusTests
0CoveredT7,T8,T13
1CoveredT7,T8,T13

 LINE       313
 EXPRESSION (pwrup_timer_cnt_q == cfg_pwrup_time_i)
            -------------------1-------------------
-1-StatusTestsExclude Annotation
0Excluded VC_COV_UNR
1CoveredT7,T8,T13

 LINE       363
 EXPRESSION (np_sample_cnt_q == np_sample_cnt_thresh)
            --------------------1--------------------
-1-StatusTests
0CoveredT8,T12,T13
1CoveredT8,T12,T13

FSM Coverage for Instance : tb.dut.u_adc_ctrl_core.u_adc_ctrl_fsm
Summary for FSM :: fsm_state_q
TotalCoveredPercent
States 17 17 100.00 (Not included in score)
Transitions 37 37 100.00
Sequences 0 0

State, Transition and Sequence Details for FSM :: fsm_state_q
statesLine No.CoveredTests
LP_0 225 Covered T7,T8,T13
LP_021 263 Covered T7,T8,T13
LP_1 269 Covered T7,T8,T13
LP_EVAL 276 Covered T7,T8,T13
LP_PWRUP 304 Covered T7,T8,T13
LP_SLP 285 Covered T7,T8,T13
NP_0 228 Covered T2,T3,T4
NP_021 322 Covered T2,T3,T4
NP_1 328 Covered T2,T3,T4
NP_DONE 364 Covered T8,T12,T13
NP_EVAL 335 Covered T2,T3,T4
ONEST_0 222 Covered T2,T4,T5
ONEST_021 236 Covered T2,T4,T5
ONEST_1 242 Covered T2,T4,T5
ONEST_DONE 249 Covered T2,T4,T5
PWRDN 180 Covered T1,T2,T3
PWRUP 211 Covered T2,T3,T4


transitionsLine No.CoveredTests
LP_0->LP_021 263 Covered T7,T8,T13
LP_0->PWRDN 180 Covered T8,T14,T15
LP_021->LP_1 269 Covered T7,T8,T13
LP_021->PWRDN 180 Covered T55,T57,T58
LP_1->LP_EVAL 276 Covered T7,T8,T13
LP_1->PWRDN 180 Covered T56,T57,T59
LP_EVAL->LP_SLP 285 Covered T7,T8,T13
LP_EVAL->NP_0 291 Covered T8,T13,T14
LP_EVAL->PWRDN 180 Covered T7,T14,T38
LP_PWRUP->LP_0 315 Covered T7,T8,T13
LP_PWRUP->PWRDN 180 Covered T14,T20,T60
LP_SLP->LP_PWRUP 304 Covered T7,T8,T13
LP_SLP->PWRDN 180 Covered T7,T38,T39
NP_0->NP_021 322 Covered T2,T3,T4
NP_0->PWRDN 180 Covered T2,T4,T10
NP_021->NP_1 328 Covered T2,T3,T4
NP_021->PWRDN 180 Covered T49,T60,T56
NP_1->NP_EVAL 335 Covered T2,T3,T4
NP_1->PWRDN 180 Covered T3,T8,T49
NP_DONE->NP_0 375 Covered T8,T12,T13
NP_DONE->PWRDN 180 Covered T56,T57,T61
NP_EVAL->LP_0 355 Covered T13,T15,T20
NP_EVAL->NP_0 357 Covered T2,T3,T4
NP_EVAL->NP_DONE 364 Covered T8,T12,T13
NP_EVAL->PWRDN 180 Covered T2,T3,T4
ONEST_0->ONEST_021 236 Covered T2,T4,T5
ONEST_0->PWRDN 180 Covered T14,T40,T18
ONEST_021->ONEST_1 242 Covered T2,T4,T5
ONEST_021->PWRDN 180 Covered T40,T60,T55
ONEST_1->ONEST_DONE 249 Covered T2,T4,T5
ONEST_1->PWRDN 180 Covered T55,T56,T57
ONEST_DONE->PWRDN 180 Covered T2,T4,T5
PWRDN->PWRUP 211 Covered T2,T3,T4
PWRUP->LP_0 225 Covered T7,T8,T13
PWRUP->NP_0 228 Covered T2,T3,T4
PWRUP->ONEST_0 222 Covered T2,T4,T5
PWRUP->PWRDN 180 Covered T18,T48,T60



Branch Coverage for Instance : tb.dut.u_adc_ctrl_core.u_adc_ctrl_fsm
Line No.TotalCoveredPercent
Branches 79 78 98.73
TERNARY 74 2 2 100.00
TERNARY 87 2 2 100.00
TERNARY 100 2 2 100.00
TERNARY 113 2 2 100.00
TERNARY 129 2 2 100.00
TERNARY 133 2 2 100.00
IF 61 3 3 100.00
IF 77 3 3 100.00
IF 90 3 3 100.00
IF 103 3 3 100.00
IF 117 3 3 100.00
IF 136 3 3 100.00
IF 157 4 4 100.00
IF 176 3 3 100.00
CASE 207 42 41 97.62


74 assign pwrup_timer_cnt_d = (pwrup_timer_cnt_en) ? pwrup_timer_cnt_q + 1'b1 : pwrup_timer_cnt_q; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T2,T3,T4
0 Covered T1,T2,T3


87 assign lp_sample_cnt_d = (lp_sample_cnt_en) ? lp_sample_cnt_q + 1'b1 : lp_sample_cnt_q; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T8,T13,T14
0 Covered T1,T2,T3


100 assign np_sample_cnt_d = (np_sample_cnt_en) ? np_sample_cnt_q + 1'b1 : np_sample_cnt_q; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T3,T8,T12
0 Covered T1,T2,T3


113 assign wakeup_timer_cnt_d = (wakeup_timer_cnt_en) ? -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T7,T8,T13
0 Covered T1,T2,T3


129 assign chn0_val_d = (chn0_val_we_d) ? adc_d_i : chn0_val_o; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T2,T3,T4
0 Covered T1,T2,T3


133 assign chn1_val_d = (chn1_val_we_d) ? adc_d_i : chn1_val_o; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T2,T3,T4
0 Covered T1,T2,T3


61 if (!rst_aon_ni) begin -1- 62 trigger_q <= 1'b0; ==> 63 end 64 else if (cfg_fsm_rst_i) begin -2- 65 trigger_q <= 1'b0; ==> 66 end else begin 67 trigger_q <= cfg_adc_enable_i; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T12,T13,T15
0 0 Covered T1,T2,T3


77 if (!rst_aon_ni) begin -1- 78 pwrup_timer_cnt_q <= '0; ==> 79 end 80 else if (pwrup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin -2- 81 pwrup_timer_cnt_q <= '0; ==> 82 end else begin 83 pwrup_timer_cnt_q <= pwrup_timer_cnt_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T2,T3,T4
0 0 Covered T1,T2,T3


90 if (!rst_aon_ni) begin -1- 91 lp_sample_cnt_q <= '0; ==> 92 end 93 else if (lp_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin -2- 94 lp_sample_cnt_q <= '0; ==> 95 end else begin 96 lp_sample_cnt_q <= lp_sample_cnt_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T2,T4,T5
0 0 Covered T1,T2,T3


103 if (!rst_aon_ni) begin -1- 104 np_sample_cnt_q <= '0; ==> 105 end 106 else if (np_sample_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin -2- 107 np_sample_cnt_q <= '0; ==> 108 end else begin 109 np_sample_cnt_q <= np_sample_cnt_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T2,T4,T5
0 0 Covered T1,T2,T3


117 if (!rst_aon_ni) begin -1- 118 wakeup_timer_cnt_q <= '0; ==> 119 end 120 else if (wakeup_timer_cnt_clr || cfg_fsm_rst_i || trigger_h2l) begin -2- 121 wakeup_timer_cnt_q <= '0; ==> 122 end else begin 123 wakeup_timer_cnt_q <= wakeup_timer_cnt_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T2,T4,T5
0 0 Covered T1,T2,T3


136 if (!rst_aon_ni) begin -1- 137 chn0_val_we_o <= '0; ==> 138 chn1_val_we_o <= '0; 139 chn0_val_o <= '0; 140 chn1_val_o <= '0; 141 end 142 else if (cfg_fsm_rst_i) begin -2- 143 chn0_val_we_o <= '0; ==> 144 chn1_val_we_o <= '0; 145 chn0_val_o <= '0; 146 chn1_val_o <= '0; 147 end else begin 148 chn0_val_we_o <= chn0_val_we_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T12,T13,T15
0 0 Covered T1,T2,T3


157 if (!rst_aon_ni) begin -1- 158 adc_ctrl_match_q <= '0; ==> 159 end 160 else if (cfg_fsm_rst_i) begin -2- 161 adc_ctrl_match_q <= '0; ==> 162 end 163 else if (ld_match) begin -3- 164 adc_ctrl_match_q <= adc_ctrl_match_i; ==> 165 end MISSING_ELSE ==>

Branches:
-1--2--3-StatusTests
1 - - Covered T1,T2,T3
0 1 - Covered T12,T13,T15
0 0 1 Covered T2,T3,T4
0 0 0 Covered T1,T2,T3


176 if (!rst_aon_ni) begin -1- 177 fsm_state_q <= PWRDN; ==> 178 end 179 else if (trigger_h2l || cfg_fsm_rst_i) begin -2- 180 fsm_state_q <= PWRDN; ==> 181 end else begin 182 fsm_state_q <= fsm_state_d; ==>

Branches:
-1--2-StatusTests
1 - Covered T1,T2,T3
0 1 Covered T2,T4,T5
0 0 Covered T1,T2,T3


207 unique case (fsm_state_q) -1- 208 PWRDN: begin 209 adc_pd_o = 1'b1; 210 if (trigger_l2h) begin -2- 211 fsm_state_d = PWRUP; ==> 212 end MISSING_ELSE ==> 213 end 214 215 PWRUP: begin 216 if (pwrup_timer_cnt_q != cfg_pwrup_time_i) begin -3- 217 pwrup_timer_cnt_en = 1'b1; ==> 218 end 219 else if (pwrup_timer_cnt_q == cfg_pwrup_time_i) begin -4- 220 pwrup_timer_cnt_clr = 1'b1; 221 if (cfg_oneshot_mode_i) begin -5- 222 fsm_state_d = ONEST_0; ==> 223 end 224 else if (cfg_lp_mode_i) begin -6- 225 fsm_state_d = LP_0; ==> 226 end 227 else if (!cfg_lp_mode_i) begin -7- 228 fsm_state_d = NP_0; ==> 229 end MISSING_ELSE ==> (Excluded) Exclude Annotation: VC_COV_UNR 230 end MISSING_ELSE ==> (Excluded) Exclude Annotation: VC_COV_UNR 231 end 232 233 ONEST_0: begin 234 adc_chn_sel_o = 2'b01; 235 if (adc_d_val_i) begin//sample chn0 value -8- 236 fsm_state_d = ONEST_021; ==> 237 end MISSING_ELSE ==> 238 end 239 240 ONEST_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 241 if (!adc_d_val_i) begin -9- 242 fsm_state_d = ONEST_1; ==> 243 end MISSING_ELSE ==> 244 end 245 246 ONEST_1: begin 247 adc_chn_sel_o = 2'b10; 248 if (adc_d_val_i) begin//sample chn1 value -10- 249 fsm_state_d = ONEST_DONE; ==> 250 end MISSING_ELSE ==> 251 end 252 253 // delay done assertion by one cycle to match 254 // adc capture register timing 255 ONEST_DONE: begin 256 oneshot_done_o = 1'b1; ==> 257 fsm_state_d = PWRDN; 258 end 259 260 LP_0: begin 261 adc_chn_sel_o = 2'b01; 262 if (adc_d_val_i) begin//sample chn0 value -11- 263 fsm_state_d = LP_021; ==> 264 end MISSING_ELSE ==> 265 end 266 267 LP_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 268 if (!adc_d_val_i) begin -12- 269 fsm_state_d = LP_1; ==> 270 end MISSING_ELSE ==> 271 end 272 273 LP_1: begin 274 adc_chn_sel_o = 2'b10; 275 if (adc_d_val_i) begin//sample chn1 value -13- 276 fsm_state_d = LP_EVAL; ==> 277 end MISSING_ELSE ==> 278 end 279 280 LP_EVAL: begin 281 // do not transition forward until handshake with ADC is complete 282 if (!adc_d_val_i) begin -14- 283 ld_match = 1'b1; 284 if (!stay_match) begin -15- 285 fsm_state_d = LP_SLP; ==> 286 lp_sample_cnt_clr = 1'b1; 287 end else if (lp_sample_cnt_q < lp_sample_cnt_thresh) begin -16- 288 fsm_state_d = LP_SLP; ==> 289 lp_sample_cnt_en = 1'b1; 290 end else if (lp_sample_cnt_q == lp_sample_cnt_thresh) begin -17- 291 fsm_state_d = NP_0; ==> 292 lp_sample_cnt_clr = 1'b1; 293 aon_fsm_trans_o = 1'b1; 294 end MISSING_ELSE ==> 295 end MISSING_ELSE ==> 296 end 297 298 LP_SLP: begin 299 adc_pd_o = 1'b1; 300 if (wakeup_timer_cnt_q != cfg_wakeup_time_i) begin -18- 301 wakeup_timer_cnt_en = 1'b1; ==> 302 end 303 else if (wakeup_timer_cnt_q == cfg_wakeup_time_i) begin -19- 304 fsm_state_d = LP_PWRUP; ==> 305 wakeup_timer_cnt_clr = 1'b1; 306 end MISSING_ELSE ==> (Excluded) Exclude Annotation: VC_COV_UNR 307 end 308 309 LP_PWRUP: begin 310 if (pwrup_timer_cnt_q != cfg_pwrup_time_i) begin -20- 311 pwrup_timer_cnt_en = 1'b1; ==> 312 end 313 else if (pwrup_timer_cnt_q == cfg_pwrup_time_i) begin -21- 314 pwrup_timer_cnt_clr = 1'b1; ==> 315 fsm_state_d = LP_0; 316 end MISSING_ELSE ==> (Excluded) Exclude Annotation: VC_COV_UNR 317 end 318 319 NP_0: begin 320 adc_chn_sel_o = 2'b01; 321 if (adc_d_val_i) begin//sample chn0 value -22- 322 fsm_state_d = NP_021; ==> 323 end MISSING_ELSE ==> 324 end 325 326 NP_021: begin//transition between chn0 and chn1; adc_chn_sel_o=2'b0 327 if (!adc_d_val_i) begin -23- 328 fsm_state_d = NP_1; ==> 329 end MISSING_ELSE ==> 330 end 331 332 NP_1: begin 333 adc_chn_sel_o = 2'b10; 334 if (adc_d_val_i) begin//sample chn1 value -24- 335 fsm_state_d = NP_EVAL; ==> 336 end MISSING_ELSE ==> 337 end 338 339 NP_EVAL: begin 340 // do not transition forward until handshake with ADC is complete 341 if (!adc_d_val_i) begin -25- 342 ld_match = 1'b1; 343 // if there is no match in normal power mode, clear counter and begin sampling again. 344 // if there is no match and low power mode is enabled, clear counter and go back to LP_0. 345 // 346 // if there is a match, there are 3 conditions: 347 // 1. the sample count is less than the threshold -> still attempting to make a new match, 348 // keep sampling. 349 // 2. the sample count is equal to the threshold -> a new match has just been made, go to 350 // DONE. 351 // 3, the sample count is greater than the threshold -> this is a continued stable match, 352 // keep sampling. 353 if (!stay_match) begin -26- 354 if (cfg_lp_mode_i) begin -27- 355 fsm_state_d = LP_0; ==> 356 end else begin 357 fsm_state_d = NP_0; ==> 358 end 359 np_sample_cnt_clr = 1'b1; 360 end else if (np_sample_cnt_q < np_sample_cnt_thresh) begin -28- 361 fsm_state_d = NP_0; ==> 362 np_sample_cnt_en = 1'b1; 363 end else if (np_sample_cnt_q == np_sample_cnt_thresh) begin -29- 364 fsm_state_d = NP_DONE; ==> 365 np_sample_cnt_en = 1'b1; 366 end else if (np_sample_cnt_q > np_sample_cnt_thresh) begin -30- 367 fsm_state_d = NP_0; ==> 368 end MISSING_ELSE ==> (Excluded) Exclude Annotation: VC_COV_UNR 369 end MISSING_ELSE ==> 370 end 371 372 // delay done assertion by one cycle to match with channel register timing 373 NP_DONE: begin 374 adc_ctrl_done_o = 1'b1; ==> 375 fsm_state_d = NP_0; 376 end 377 378 default: fsm_state_d = PWRDN; ==>

Branches:
-1--2--3--4--5--6--7--8--9--10--11--12--13--14--15--16--17--18--19--20--21--22--23--24--25--26--27--28--29--30-StatusTestsExclude Annotation
PWRDN 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
PWRDN 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - Covered T1,T2,T3
PWRUP - 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
PWRUP - 0 1 1 - - - - - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
PWRUP - 0 1 0 1 - - - - - - - - - - - - - - - - - - - - - - - - Covered T7,T8,T13
PWRUP - 0 1 0 0 1 - - - - - - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
PWRUP - 0 1 0 0 0 - - - - - - - - - - - - - - - - - - - - - - - Excluded VC_COV_UNR
PWRUP - 0 0 - - - - - - - - - - - - - - - - - - - - - - - - - - Excluded VC_COV_UNR
ONEST_0 - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_0 - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_021 - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_021 - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_1 - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_1 - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
ONEST_DONE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Covered T2,T4,T5
LP_0 - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_0 - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_021 - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_021 - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_1 - - - - - - - - - - - 1 - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_1 - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_EVAL - - - - - - - - - - - - 1 1 - - - - - - - - - - - - - - - Covered T7,T13,T14
LP_EVAL - - - - - - - - - - - - 1 0 1 - - - - - - - - - - - - - - Covered T8,T13,T14
LP_EVAL - - - - - - - - - - - - 1 0 0 1 - - - - - - - - - - - - - Covered T8,T13,T14
LP_EVAL - - - - - - - - - - - - 1 0 0 0 - - - - - - - - - - - - - Covered T14,T55,T56
LP_EVAL - - - - - - - - - - - - 0 - - - - - - - - - - - - - - - - Covered T7,T8,T13
LP_SLP - - - - - - - - - - - - - - - - 1 - - - - - - - - - - - - Covered T7,T8,T13
LP_SLP - - - - - - - - - - - - - - - - 0 1 - - - - - - - - - - - Covered T7,T8,T13
LP_SLP - - - - - - - - - - - - - - - - 0 0 - - - - - - - - - - - Excluded VC_COV_UNR
LP_PWRUP - - - - - - - - - - - - - - - - - - 1 - - - - - - - - - - Covered T7,T8,T13
LP_PWRUP - - - - - - - - - - - - - - - - - - 0 1 - - - - - - - - - Covered T7,T8,T13
LP_PWRUP - - - - - - - - - - - - - - - - - - 0 0 - - - - - - - - - Excluded VC_COV_UNR
NP_0 - - - - - - - - - - - - - - - - - - - - 1 - - - - - - - - Covered T2,T3,T4
NP_0 - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - - Covered T2,T3,T4
NP_021 - - - - - - - - - - - - - - - - - - - - - 1 - - - - - - - Covered T2,T3,T4
NP_021 - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - - Covered T2,T3,T4
NP_1 - - - - - - - - - - - - - - - - - - - - - - 1 - - - - - - Covered T2,T3,T4
NP_1 - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - - Covered T2,T3,T4
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 1 1 - - - Covered T13,T15,T20
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 1 0 - - - Covered T2,T4,T10
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 0 - 1 - - Covered T3,T8,T12
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 0 - 0 1 - Covered T8,T12,T13
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 0 - 0 0 1 Covered T8,T12,T13
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 1 0 - 0 0 0 Excluded VC_COV_UNR
NP_EVAL - - - - - - - - - - - - - - - - - - - - - - - 0 - - - - - Covered T2,T3,T4
NP_DONE - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Covered T8,T12,T13
default - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Not Covered


Assert Coverage for Instance : tb.dut.u_adc_ctrl_core.u_adc_ctrl_fsm
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 4 4 100.00 4 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 4 4 100.00 4 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
LpSampleCntCfg_M 31070228 30997539 0 0
NpCntClrMisMatch_A 31070228 152045 0 0
NpCntClrPwrDn_A 31070228 87916 0 0
NpSampleCntCfg_M 31070228 30997539 0 0


LpSampleCntCfg_M
NameAttemptsReal SuccessesFailuresIncomplete
Total 31070228 30997539 0 0
T1 82 1 0 0
T2 1139 1053 0 0
T3 308 136 0 0
T4 749 676 0 0
T5 1107 1028 0 0
T6 1227 1139 0 0
T7 7255 7183 0 0
T8 63 1 0 0
T21 83 1 0 0
T22 90 1 0 0

NpCntClrMisMatch_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 31070228 152045 0 0
T2 1139 10 0 0
T3 308 0 0 0
T4 749 7 0 0
T5 1107 0 0 0
T6 1227 0 0 0
T7 7255 51 0 0
T8 63 0 0 0
T9 1129 0 0 0
T10 0 3 0 0
T12 0 1029 0 0
T13 0 129 0 0
T21 83 0 0 0
T22 90 0 0 0
T27 0 10 0 0
T38 0 39 0 0
T39 0 36 0 0
T42 0 54 0 0

NpCntClrPwrDn_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 31070228 87916 0 0
T1 82 1 0 0
T2 1139 123 0 0
T3 308 19 0 0
T4 749 79 0 0
T5 1107 241 0 0
T6 1227 241 0 0
T7 7255 78 0 0
T8 63 1 0 0
T21 83 1 0 0
T22 90 1 0 0

NpSampleCntCfg_M
NameAttemptsReal SuccessesFailuresIncomplete
Total 31070228 30997539 0 0
T1 82 1 0 0
T2 1139 1053 0 0
T3 308 136 0 0
T4 749 676 0 0
T5 1107 1028 0 0
T6 1227 1139 0 0
T7 7255 7183 0 0
T8 63 1 0 0
T21 83 1 0 0
T22 90 1 0 0

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