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

Module : keymgr_ctrl
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.80 100.00 98.11 100.00 100.00 90.91

Source File(s) :
/workspace/default/sim-vcs/../src/lowrisc_ip_keymgr_0.1/rtl/keymgr_ctrl.sv

Module self-instances :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
tb.dut.u_ctrl 97.80 100.00 98.11 100.00 100.00 90.91



Module Instance : tb.dut.u_ctrl

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.80 100.00 98.11 100.00 100.00 90.91


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
97.12 99.71 95.29 94.97 100.00 98.65 94.12


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
98.05 96.00 98.36 99.96 95.92 100.00 dut


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
gen_ecc_loop_cdi[0].gen_ecc_loop_shares[0].gen_ecc_loop_words[0].u_dec 93.15 93.15
gen_ecc_loop_cdi[0].gen_ecc_loop_shares[0].gen_ecc_loop_words[1].u_dec 97.26 97.26
gen_ecc_loop_cdi[0].gen_ecc_loop_shares[0].gen_ecc_loop_words[2].u_dec 95.89 95.89
gen_ecc_loop_cdi[0].gen_ecc_loop_shares[0].gen_ecc_loop_words[3].u_dec 93.15 93.15
gen_ecc_loop_cdi[0].gen_ecc_loop_shares[1].gen_ecc_loop_words[0].u_dec 93.15 93.15
gen_ecc_loop_cdi[0].gen_ecc_loop_shares[1].gen_ecc_loop_words[1].u_dec 97.26 97.26
gen_ecc_loop_cdi[0].gen_ecc_loop_shares[1].gen_ecc_loop_words[2].u_dec 97.26 97.26
gen_ecc_loop_cdi[0].gen_ecc_loop_shares[1].gen_ecc_loop_words[3].u_dec 93.15 93.15
gen_ecc_loop_cdi[1].gen_ecc_loop_shares[0].gen_ecc_loop_words[0].u_dec 95.89 95.89
gen_ecc_loop_cdi[1].gen_ecc_loop_shares[0].gen_ecc_loop_words[1].u_dec 93.15 93.15
gen_ecc_loop_cdi[1].gen_ecc_loop_shares[0].gen_ecc_loop_words[2].u_dec 98.63 98.63
gen_ecc_loop_cdi[1].gen_ecc_loop_shares[0].gen_ecc_loop_words[3].u_dec 93.15 93.15
gen_ecc_loop_cdi[1].gen_ecc_loop_shares[1].gen_ecc_loop_words[0].u_dec 93.15 93.15
gen_ecc_loop_cdi[1].gen_ecc_loop_shares[1].gen_ecc_loop_words[1].u_dec 93.15 93.15
gen_ecc_loop_cdi[1].gen_ecc_loop_shares[1].gen_ecc_loop_words[2].u_dec 95.89 95.89
gen_ecc_loop_cdi[1].gen_ecc_loop_shares[1].gen_ecc_loop_words[3].u_dec 95.89 95.89
u_cnt 100.00 100.00
u_data_en 84.15 97.44 33.33 100.00 90.00 100.00
u_err 94.81 100.00 84.44 100.00
u_hw_sel 100.00 100.00 100.00 100.00
u_key_valid_sync 100.00 100.00 100.00
u_op_state 100.00 100.00 100.00 100.00 100.00 100.00
u_state_regs 100.00 100.00 100.00 100.00


Since this is the module's only instance, the coverage report is the same as for the module.
Line Coverage for Module : keymgr_ctrl
Line No.TotalCoveredPercent
TOTAL194194100.00
CONT_ASSIGN15011100.00
CONT_ASSIGN15111100.00
CONT_ASSIGN15211100.00
CONT_ASSIGN15311100.00
CONT_ASSIGN15511100.00
CONT_ASSIGN16511100.00
CONT_ASSIGN16611100.00
CONT_ASSIGN16911100.00
CONT_ASSIGN18511100.00
CONT_ASSIGN18611100.00
CONT_ASSIGN18711100.00
CONT_ASSIGN18811100.00
CONT_ASSIGN20211100.00
CONT_ASSIGN20711100.00
CONT_ASSIGN21311100.00
CONT_ASSIGN21511100.00
CONT_ASSIGN23011100.00
CONT_ASSIGN24311100.00
ALWAYS24833100.00
CONT_ASSIGN25511100.00
ALWAYS26133100.00
ALWAYS26433100.00
CONT_ASSIGN27511100.00
CONT_ASSIGN27711100.00
CONT_ASSIGN28111100.00
CONT_ASSIGN28111100.00
CONT_ASSIGN28811100.00
ALWAYS29077100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN31611100.00
CONT_ASSIGN32311100.00
CONT_ASSIGN34611100.00
ALWAYS3492121100.00
CONT_ASSIGN43311100.00
CONT_ASSIGN44411100.00
CONT_ASSIGN44511100.00
CONT_ASSIGN45111100.00
ALWAYS4557979100.00
ALWAYS68144100.00
ALWAYS6891212100.00
ALWAYS72555100.00
CONT_ASSIGN76311100.00
CONT_ASSIGN76911100.00
CONT_ASSIGN80011100.00
ALWAYS80833100.00
CONT_ASSIGN81811100.00
ROUTINE86511100.00
ALWAYS90733100.00
WARNING: The source file '/workspace/default/sim-vcs/../src/lowrisc_ip_keymgr_0.1/rtl/keymgr_ctrl.sv' or '../src/lowrisc_ip_keymgr_0.1/rtl/keymgr_ctrl.sv' was not found, so annotated line coverage report could not be generated.
Line No.CoveredStatements
150 1 1
151 1 1
152 1 1
153 1 1
155 1 1
165 1 1
166 1 1
169 1 1
185 1 1
186 1 1
187 1 1
188 1 1
202 1 1
207 1 1
213 1 1
215 1 1
230 1 1
243 1 1
248 1 1
249 1 1
251 1 1
255 1 1
261 3 3
264 1 1
265 1 1
267 1 1
275 1 1
277 1 1
281 2 2
288 1 1
290 1 1
291 1 1
292 1 1
294 1 1
295 1 1
296 1 1
297 1 1
316 16 16
323 1 1
346 1 1
349 1 1
350 1 1
351 1 1
355 1 1
357 1 1
358 1 1
361 1 1
367 1 1
368 1 1
369 1 1
370 1 1
371 1 1
373 unreachable
375 unreachable
380 1 1
381 1 1
382 1 1
388 1 1
389 1 1
393 1 1
394 1 1
395 1 1
396 1 1
433 1 1
444 1 1
445 1 1
451 1 1
455 1 1
458 1 1
459 1 1
460 1 1
463 1 1
466 1 1
469 1 1
472 1 1
475 1 1
478 1 1
481 1 1
484 1 1
487 1 1
491 1 1
493 1 1
496 1 1
500 1 1
504 1 1
507 1 1
508 1 1
509 1 1
510 1 1
MISSING_ELSE
516 1 1
517 1 1
519 1 1
520 1 1
MISSING_ELSE
526 1 1
527 1 1
532 1 1
533 unreachable
534 unreachable
MISSING_ELSE
540 1 1
541 1 1
542 1 1
549 1 1
552 1 1
553 1 1
555 1 1
556 1 1
557 1 1
558 1 1
559 1 1
560 1 1
561 1 1
MISSING_ELSE
567 1 1
572 1 1
575 1 1
576 1 1
577 1 1
578 1 1
579 1 1
580 1 1
581 1 1
MISSING_ELSE
587 1 1
592 1 1
595 1 1
596 1 1
597 1 1
598 1 1
599 1 1
600 1 1
601 1 1
MISSING_ELSE
608 1 1
613 1 1
615 1 1
616 1 1
617 1 1
618 1 1
619 1 1
MISSING_ELSE
628 1 1
630 1 1
631 1 1
640 1 1
641 1 1
642 1 1
MISSING_ELSE
653 1 1
654 1 1
656 1 1
657 1 1
MISSING_ELSE
662 1 1
663 1 1
681 1 1
682 1 1
683 1 1
684 1 1
MISSING_ELSE
689 1 1
690 1 1
692 1 1
694 1 1
697 1 1
700 1 1
703 1 1
706 1 1
709 1 1
712 1 1
713 1 1
717 1 1
725 1 1
726 1 1
730 1 1
731 1 1
732 1 1
MISSING_ELSE
763 1 1
769 1 1
800 1 1
808 1 1
809 1 1
811 1 1
818 1 1
865 1 1
907 3 3


Cond Coverage for Module : keymgr_ctrl
TotalCoveredPercent
Conditions21220898.11
Logical21220898.11
Non-Logical00
Event00

 LINE       150
 EXPRESSION (op_i == OpAdvance)
            ---------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       151
 EXPRESSION (op_i == OpGenId)
            --------1--------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       152
 EXPRESSION (op_i == OpGenSwOut)
            ----------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T5

 LINE       153
 EXPRESSION (op_i == OpGenHwOut)
            ----------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       155
 EXPRESSION (gen_id_op | gen_sw_op | gen_hw_op)
             ----1----   ----2----   ----3----
-1--2--3-StatusTests
000CoveredT2,T3,T4
001CoveredT2,T3,T4
010CoveredT2,T3,T5
100CoveredT1,T2,T3

 LINE       165
 EXPRESSION (op_start_i & adv_op & en_i)
             -----1----   ---2--   --3-
-1--2--3-StatusTests
011CoveredT2,T3,T4
101CoveredT2,T3,T4
110CoveredT44,T45,T46
111CoveredT2,T3,T4

 LINE       166
 EXPRESSION (op_start_i & gen_hw_op & en_i)
             -----1----   ----2----   --3-
-1--2--3-StatusTests
011CoveredT2,T3,T4
101CoveredT2,T3,T4
110CoveredT6,T7,T8
111CoveredT2,T3,T4

 LINE       169
 EXPRESSION ((op_start_i & dis_op) | ((!en_i)))
             ----------1----------   ----2----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT1,T2,T3
10CoveredT3,T34,T47

 LINE       169
 SUB-EXPRESSION (op_start_i & dis_op)
                 -----1----   ---2--
-1--2-StatusTests
01CoveredT3,T34,T47
10CoveredT2,T3,T4
11CoveredT3,T34,T47

 LINE       185
 EXPRESSION (op_req & adv_op)
             ---1--   ---2--
-1--2-StatusTests
01CoveredT2,T3,T4
10CoveredT2,T3,T4
11CoveredT3,T4,T5

 LINE       186
 EXPRESSION (op_req & dis_op)
             ---1--   ---2--
-1--2-StatusTests
01CoveredT3,T34,T47
10CoveredT2,T3,T4
11CoveredT3,T34,T47

 LINE       187
 EXPRESSION (op_req & gen_id_op)
             ---1--   ----2----
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT2,T3,T4
11CoveredT3,T5,T14

 LINE       188
 EXPRESSION (op_req & (gen_sw_op | gen_hw_op))
             ---1--   -----------2-----------
-1--2-StatusTests
01CoveredT2,T3,T4
10CoveredT3,T4,T5
11CoveredT2,T3,T4

 LINE       188
 SUB-EXPRESSION (gen_sw_op | gen_hw_op)
                 ----1----   ----2----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT2,T3,T4
10CoveredT2,T3,T5

 LINE       202
 EXPRESSION (adv_req & op_ack & ( ~ (op_err | op_fault_err) ))
             ---1---   ---2--   --------------3--------------
-1--2--3-StatusTests
011CoveredT3,T4,T5
101CoveredT3,T4,T5
110CoveredT3,T4,T5
111CoveredT3,T4,T5

 LINE       202
 SUB-EXPRESSION (op_err | op_fault_err)
                 ---1--   ------2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT2,T36,T29
10CoveredT2,T3,T4

 LINE       230
 EXPRESSION (wipe_req ? KeyUpdateWipe : (random_req ? KeyUpdateRandom : (init_o ? KeyUpdateRoot : op_update_sel)))
             ----1---
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T14

 LINE       230
 SUB-EXPRESSION (random_req ? KeyUpdateRandom : (init_o ? KeyUpdateRoot : op_update_sel))
                 -----1----
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       230
 SUB-EXPRESSION (init_o ? KeyUpdateRoot : op_update_sel)
                 ---1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       243
 EXPRESSION (prng_en_dis_inv_set ? 2'b11 : (prng_reseed_done_i ? ({1'b0, prng_en_dis_inv_q[1]}) : prng_en_dis_inv_q))
             ---------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       243
 SUB-EXPRESSION (prng_reseed_done_i ? ({1'b0, prng_en_dis_inv_q[1]}) : prng_en_dis_inv_q)
                 ---------1--------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       255
 EXPRESSION (random_req | wipe_req | prng_en_dis_inv_q[0])
             -----1----   ----2---   ----------3---------
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T3,T4
010CoveredT2,T3,T14
100CoveredT2,T3,T4

 LINE       277
 EXPRESSION (advance_sel ? cdi_cnt : op_cdi_sel_i)
             -----1-----
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       281
 EXPRESSION (invalid_stage_sel_o ? ({EntropyRounds {entropy_i[0]}}) : key_state_q[cdi_sel_o][0])
             ---------1---------
-1-StatusTests
0CoveredT3,T4,T5
1CoveredT1,T2,T3

 LINE       281
 EXPRESSION (invalid_stage_sel_o ? ({EntropyRounds {entropy_i[1]}}) : key_state_q[cdi_sel_o][1])
             ---------1---------
-1-StatusTests
0CoveredT3,T4,T5
1CoveredT1,T2,T3

 LINE       333
 EXPRESSION (root_key_i.creator_root_key_share0_valid && root_key_i.creator_root_key_share1_valid)
             --------------------1-------------------    --------------------2-------------------
-1--2-StatusTests
01Not Covered
10Not Covered
11CoveredT1,T2,T3

 LINE       346
 EXPRESSION (op_req ? cnt[0] : '0)
             ---1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       389
 EXPRESSION ((adv_op || dis_op) ? kmac_data_i : key_state_q[cdi_sel_o])
             ---------1--------
-1-StatusTests
0CoveredT3,T4,T5
1CoveredT3,T4,T5

 LINE       389
 SUB-EXPRESSION (adv_op || dis_op)
                 ---1--    ---2--
-1--2-StatusTests
00CoveredT3,T4,T5
01CoveredT3,T34,T47
10CoveredT3,T4,T5

 LINE       408
 EXPRESSION (op_ack | random_ack)
             ---1--   -----2----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT2,T3,T4
10CoveredT2,T3,T4

 LINE       408
 EXPRESSION (op_update | random_req)
             ----1----   -----2----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT2,T3,T4
10CoveredT3,T4,T5

 LINE       433
 EXPRESSION (op_req ? op_ack : (init_o | invalid_op))
             ---1--
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       433
 SUB-EXPRESSION (init_o | invalid_op)
                 ---1--   -----2----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT2,T3,T4
10CoveredT2,T3,T4

 LINE       444
 EXPRESSION (op_ack & adv_req & ((~op_err)))
             ---1--   ---2---   -----3-----
-1--2--3-StatusTests
011CoveredT3,T4,T5
101CoveredT3,T4,T5
110CoveredT3,T4,T5
111CoveredT3,T4,T5

 LINE       445
 EXPRESSION (op_ack & dis_req)
             ---1--   ---2---
-1--2-StatusTests
01CoveredT3,T34,T47
10CoveredT2,T3,T4
11CoveredT3,T34,T47

 LINE       504
 EXPRESSION (op_start_i & ((~advance_sel)))
             -----1----   --------2-------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT2,T3,T4
11CoveredT2,T3,T4

 LINE       532
 EXPRESSION (int'(cnt) == (EntropyRounds - 1))
            -----------------1----------------
-1-StatusTests
0CoveredT2,T3,T4
1UnreachableT2,T3,T4

 LINE       542
 EXPRESSION ((en_i && root_key_valid_q) ? StCtrlInit : StCtrlWipe)
             -------------1------------
-1-StatusTests
0CoveredT35,T38,T48
1CoveredT2,T3,T4

 LINE       542
 SUB-EXPRESSION (en_i && root_key_valid_q)
                 --1-    --------2-------
-1--2-StatusTests
01CoveredT49,T50
10CoveredT35,T38,T48
11CoveredT2,T3,T4

 LINE       552
 EXPRESSION (advance_sel ? Creator : Disable)
             -----1-----
-1-StatusTests
0CoveredT2,T3,T4
1CoveredT3,T4,T5

 LINE       553
 EXPRESSION (op_start_i & ( ~ (advance_sel | disable_sel) ))
             -----1----   ----------------2----------------
-1--2-StatusTests
01CoveredT2,T3,T4
10CoveredT3,T4,T5
11CoveredT2,T3,T4

 LINE       553
 SUB-EXPRESSION (advance_sel | disable_sel)
                 -----1-----   -----2-----
-1--2-StatusTests
00CoveredT2,T3,T4
01CoveredT51,T44,T46
10CoveredT3,T4,T5

 LINE       555
 EXPRESSION (((!en_i)) || inv_state)
             ----1----    ----2----
-1--2-StatusTests
00CoveredT2,T3,T4
01CoveredT2,T29,T37
10CoveredT51,T44,T46

 LINE       572
 EXPRESSION (disable_sel ? Disable : (advance_sel ? OwnerInt : Creator))
             -----1-----
-1-StatusTests
0CoveredT3,T4,T5
1CoveredT14,T52,T53

 LINE       572
 SUB-EXPRESSION (advance_sel ? OwnerInt : Creator)
                 -----1-----
-1-StatusTests
0CoveredT3,T4,T5
1CoveredT3,T4,T5

 LINE       575
 EXPRESSION (((!en_i)) || inv_state)
             ----1----    ----2----
-1--2-StatusTests
00CoveredT3,T4,T5
01CoveredT36,T42,T43
10CoveredT14,T52,T54

 LINE       592
 EXPRESSION (disable_sel ? Disable : (advance_sel ? Owner : OwnerInt))
             -----1-----
-1-StatusTests
0CoveredT3,T4,T5
1CoveredT34,T55,T56

 LINE       592
 SUB-EXPRESSION (advance_sel ? Owner : OwnerInt)
                 -----1-----
-1-StatusTests
0CoveredT3,T4,T5
1CoveredT3,T4,T5

 LINE       595
 EXPRESSION (((!en_i)) || inv_state)
             ----1----    ----2----
-1--2-StatusTests
00CoveredT3,T4,T5
01CoveredT57,T31,T58
10CoveredT59,T60,T61

 LINE       613
 EXPRESSION ((disable_sel | advance_sel) ? Disable : Owner)
             -------------1-------------
-1-StatusTests
0CoveredT3,T4,T5
1CoveredT3,T4,T5

 LINE       613
 SUB-EXPRESSION (disable_sel | advance_sel)
                 -----1-----   -----2-----
-1--2-StatusTests
00CoveredT3,T4,T5
01CoveredT3,T4,T5
10CoveredT3,T45,T47

 LINE       615
 EXPRESSION (((!en_i)) || inv_state)
             ----1----    ----2----
-1--2-StatusTests
00CoveredT3,T4,T5
01CoveredT62,T63,T64
10CoveredT3,T45,T53

 LINE       617
 EXPRESSION (adv_state || dis_state)
             ----1----    ----2----
-1--2-StatusTests
00CoveredT3,T4,T5
01CoveredT3,T47,T52
10CoveredT3,T4,T5

 LINE       656
 EXPRESSION (((!en_i)) || inv_state)
             ----1----    ----2----
-1--2-StatusTests
00CoveredT3,T4,T5
01CoveredT27,T28,T39
10CoveredT3,T65,T66

 LINE       730
 EXPRESSION (((|{error_o, fault_o})) ? OpDoneFail : OpDoneSuccess)
             -----------1-----------
-1-StatusTests
0CoveredT2,T3,T4
1CoveredT2,T3,T4

 LINE       763
 EXPRESSION ((adv_en_o & ( ~ (advance_sel | disable_sel) )) | (gen_en_o & ((~gen_op))))
             -----------------------1----------------------   ------------2-----------
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT28,T67,T68
10CoveredT9,T27,T21

 LINE       763
 SUB-EXPRESSION (adv_en_o & ( ~ (advance_sel | disable_sel) ))
                 ----1---   ----------------2----------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT3,T4,T5
11CoveredT9,T27,T21

 LINE       763
 SUB-EXPRESSION (advance_sel | disable_sel)
                 -----1-----   -----2-----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT1,T2,T3
10CoveredT2,T3,T4

 LINE       763
 SUB-EXPRESSION (gen_en_o & ((~gen_op)))
                 ----1---   -----2-----
-1--2-StatusTests
01CoveredT2,T3,T4
10CoveredT2,T3,T4
11CoveredT28,T67,T68

 LINE       769
 EXPRESSION 
 Number  Term
      1  ((op_ack | op_update) & invalid) ? KeyUpdateKmac : (((op_ack | op_update) & op_fault_err) ? KeyUpdateWipe : (((op_ack | op_update) & disabled) ? KeyUpdateKmac : (((op_ack | op_update) & op_err) ? KeyUpdateIdle : ((op_ack | op_update) ? KeyUpdateKmac : KeyUpdateIdle)))))
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT11,T12,T13

 LINE       769
 SUB-EXPRESSION ((op_ack | op_update) & invalid)
                 ----------1---------   ---2---
-1--2-StatusTests
01CoveredT2,T3,T14
10CoveredT2,T3,T4
11CoveredT11,T12,T13

 LINE       769
 SUB-EXPRESSION (op_ack | op_update)
                 ---1--   ----2----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT3,T4,T5
10CoveredT2,T3,T4

 LINE       769
 SUB-EXPRESSION 
 Number  Term
      1  ((op_ack | op_update) & op_fault_err) ? KeyUpdateWipe : (((op_ack | op_update) & disabled) ? KeyUpdateKmac : (((op_ack | op_update) & op_err) ? KeyUpdateIdle : ((op_ack | op_update) ? KeyUpdateKmac : KeyUpdateIdle))))
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T36,T29

 LINE       769
 SUB-EXPRESSION ((op_ack | op_update) & op_fault_err)
                 ----------1---------   ------2-----
-1--2-StatusTests
01CoveredT2,T36,T29
10CoveredT2,T3,T4
11CoveredT2,T36,T29

 LINE       769
 SUB-EXPRESSION (op_ack | op_update)
                 ---1--   ----2----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT3,T4,T5
10CoveredT2,T3,T4

 LINE       769
 SUB-EXPRESSION 
 Number  Term
      1  ((op_ack | op_update) & disabled) ? KeyUpdateKmac : (((op_ack | op_update) & op_err) ? KeyUpdateIdle : ((op_ack | op_update) ? KeyUpdateKmac : KeyUpdateIdle)))
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T4,T5

 LINE       769
 SUB-EXPRESSION ((op_ack | op_update) & disabled)
                 ----------1---------   ----2---
-1--2-StatusTests
01CoveredT3,T4,T5
10CoveredT2,T3,T4
11CoveredT3,T4,T5

 LINE       769
 SUB-EXPRESSION (op_ack | op_update)
                 ---1--   ----2----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT3,T4,T5
10CoveredT2,T3,T4

 LINE       769
 SUB-EXPRESSION (((op_ack | op_update) & op_err) ? KeyUpdateIdle : ((op_ack | op_update) ? KeyUpdateKmac : KeyUpdateIdle))
                 ---------------1---------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       769
 SUB-EXPRESSION ((op_ack | op_update) & op_err)
                 ----------1---------   ---2--
-1--2-StatusTests
01CoveredT2,T3,T4
10CoveredT3,T4,T5
11CoveredT2,T3,T4

 LINE       769
 SUB-EXPRESSION (op_ack | op_update)
                 ---1--   ----2----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT3,T4,T5
10CoveredT2,T3,T4

 LINE       769
 SUB-EXPRESSION ((op_ack | op_update) ? KeyUpdateKmac : KeyUpdateIdle)
                 ----------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T4,T5

 LINE       769
 SUB-EXPRESSION (op_ack | op_update)
                 ---1--   ----2----
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT3,T4,T5
10CoveredT3,T4,T5

 LINE       800
 EXPRESSION ((state_d != state_q) & (state_d inside {StCtrlRootKey, StCtrlCreatorRootKey, StCtrlOwnerIntKey, StCtrlOwnerKey}))
             ----------1---------   --------------------------------------------2--------------------------------------------
-1--2-StatusTests
01CoveredT3,T4,T5
10CoveredT2,T3,T4
11CoveredT2,T3,T4

 LINE       800
 SUB-EXPRESSION (state_d != state_q)
                ----------1---------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT2,T3,T4

 LINE       818
 EXPRESSION (vld_state_change_q & ((!adv_op)))
             ---------1--------   -----2-----
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT2,T3,T4
11Not Covered

 LINE       820
 EXPRESSION (disabled | (initialized & ((~en_i))))
             ----1---   ------------2------------
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT3,T14,T51
10CoveredT3,T4,T5

 LINE       820
 SUB-EXPRESSION (initialized & ((~en_i)))
                 -----1-----   ----2----
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT2,T3,T4
11CoveredT3,T14,T51

 LINE       820
 EXPRESSION (state_intg_err_q | state_intg_err_d)
             --------1-------   --------2-------
-1--2-StatusTests
00CoveredT1,T2,T3
01CoveredT11,T12,T13
10Not Covered

FSM Coverage for Module : keymgr_ctrl
Summary for FSM :: state_q
TotalCoveredPercent
States 11 11 100.00 (Not included in score)
Transitions 19 19 100.00
Sequences 0 0

State, Transition and Sequence Details for FSM :: state_q
statesLine No.CoveredTests
StCtrlCreatorRootKey 561 Covered T3,T4,T5
StCtrlDisabled 558 Covered T3,T4,T5
StCtrlEntropyReseed 510 Covered T2,T3,T4
StCtrlInit 542 Covered T2,T3,T4
StCtrlInvalid 641 Covered T2,T3,T14
StCtrlOwnerIntKey 581 Covered T3,T4,T5
StCtrlOwnerKey 601 Covered T3,T4,T5
StCtrlRandom 520 Covered T2,T3,T4
StCtrlReset 495 Covered T1,T2,T3
StCtrlRootKey 534 Covered T2,T3,T4
StCtrlWipe 508 Covered T2,T3,T14


transitionsLine No.CoveredTests
StCtrlCreatorRootKey->StCtrlDisabled 578 Covered T53,T69,T70
StCtrlCreatorRootKey->StCtrlOwnerIntKey 581 Covered T3,T4,T5
StCtrlCreatorRootKey->StCtrlWipe 576 Covered T14,T36,T52
StCtrlDisabled->StCtrlWipe 657 Covered T3,T65,T66
StCtrlEntropyReseed->StCtrlRandom 520 Covered T2,T3,T4
StCtrlInit->StCtrlCreatorRootKey 561 Covered T3,T4,T5
StCtrlInit->StCtrlDisabled 558 Covered T53,T71,T72
StCtrlInit->StCtrlWipe 556 Covered T2,T51,T44
StCtrlOwnerIntKey->StCtrlDisabled 598 Covered T34,T55,T56
StCtrlOwnerIntKey->StCtrlOwnerKey 601 Covered T3,T4,T5
StCtrlOwnerIntKey->StCtrlWipe 596 Covered T57,T59,T60
StCtrlOwnerKey->StCtrlDisabled 618 Covered T3,T4,T5
StCtrlOwnerKey->StCtrlWipe 616 Covered T3,T45,T62
StCtrlRandom->StCtrlRootKey 534 Covered T2,T3,T4
StCtrlReset->StCtrlEntropyReseed 510 Covered T2,T3,T4
StCtrlReset->StCtrlWipe 508 Covered T11,T12,T13
StCtrlRootKey->StCtrlInit 542 Covered T2,T3,T4
StCtrlRootKey->StCtrlWipe 542 Covered T35,T38,T48
StCtrlWipe->StCtrlInvalid 641 Covered T2,T3,T14



Branch Coverage for Module : keymgr_ctrl
Line No.TotalCoveredPercent
Branches 97 97 100.00
TERNARY 230 4 4 100.00
TERNARY 243 3 3 100.00
TERNARY 277 2 2 100.00
TERNARY 346 2 2 100.00
TERNARY 433 2 2 100.00
TERNARY 769 6 6 100.00
TERNARY 281 2 2 100.00
TERNARY 281 2 2 100.00
IF 248 2 2 100.00
IF 261 2 2 100.00
IF 264 2 2 100.00
IF 290 2 2 100.00
CASE 355 7 7 100.00
CASE 493 39 39 100.00
IF 681 3 3 100.00
CASE 692 9 9 100.00
IF 726 4 4 100.00
IF 808 2 2 100.00
IF 907 2 2 100.00

WARNING: The source file /workspace/default/sim-vcs/../src/lowrisc_ip_keymgr_0.1/rtl/keymgr_ctrl.sv' or '../src/lowrisc_ip_keymgr_0.1/rtl/keymgr_ctrl.sv was not found/opened, so annotated branch coverage report could not be generated.

LineNo. Expression -1-: 230 (wipe_req) ? -2-: 230 (random_req) ? -3-: 230 (init_o) ?

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


LineNo. Expression -1-: 243 (prng_en_dis_inv_set) ? -2-: 243 (prng_reseed_done_i) ?

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


LineNo. Expression -1-: 277 (advance_sel) ?

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


LineNo. Expression -1-: 346 (op_req) ?

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


LineNo. Expression -1-: 433 (op_req) ?

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


LineNo. Expression -1-: 769 (((op_ack | op_update) & invalid)) ? -2-: 769 (((op_ack | op_update) & op_fault_err)) ? -3-: 769 (((op_ack | op_update) & disabled)) ? -4-: 769 (((op_ack | op_update) & op_err)) ? -5-: 769 ((op_ack | op_update)) ?

Branches:
-1--2--3--4--5-StatusTests
1 - - - - Covered T11,T12,T13
0 1 - - - Covered T2,T36,T29
0 0 1 - - Covered T3,T4,T5
0 0 0 1 - Covered T2,T3,T4
0 0 0 0 1 Covered T3,T4,T5
0 0 0 0 0 Covered T1,T2,T3


LineNo. Expression -1-: 281 (invalid_stage_sel_o) ?

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


LineNo. Expression -1-: 281 (invalid_stage_sel_o) ?

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


LineNo. Expression -1-: 248 if ((!rst_ni))

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


LineNo. Expression -1-: 261 if ((!rst_ni))

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


LineNo. Expression -1-: 264 if ((!rst_ni))

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


LineNo. Expression -1-: 290 if ((!rst_ni))

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


LineNo. Expression -1-: 355 case (update_sel) -2-: 367 if (root_key_valid_q) -3-: 389 ((adv_op || dis_op)) ?

Branches:
-1--2--3-StatusTests
KeyUpdateRandom - - Covered T2,T3,T4
KeyUpdateRoot 1 - Covered T2,T3,T4
KeyUpdateRoot 0 - Covered T35,T38,T48
KeyUpdateKmac - 1 Covered T3,T4,T5
KeyUpdateKmac - 0 Covered T3,T4,T5
KeyUpdateWipe - - Covered T2,T3,T14
default - - Covered T1,T2,T3


LineNo. Expression -1-: 493 case (state_q) -2-: 507 if (inv_state) -3-: 509 if (advance_sel) -4-: 519 if (prng_reseed_ack_i) -5-: 532 if ((int'(cnt) == (EntropyRounds - 1))) -6-: 542 ((en_i && root_key_valid_q)) ? -7-: 552 (advance_sel) ? -8-: 555 if (((!en_i) || inv_state)) -9-: 557 if (dis_state) -10-: 560 if (adv_state) -11-: 572 (disable_sel) ? -12-: 572 (advance_sel) ? -13-: 575 if (((!en_i) || inv_state)) -14-: 577 if (dis_state) -15-: 580 if (adv_state) -16-: 592 (disable_sel) ? -17-: 592 (advance_sel) ? -18-: 595 if (((!en_i) || inv_state)) -19-: 597 if (dis_state) -20-: 600 if (adv_state) -21-: 613 ((disable_sel | advance_sel)) ? -22-: 615 if (((!en_i) || inv_state)) -23-: 617 if ((adv_state || dis_state)) -24-: 640 if ((!op_start_i)) -25-: 656 if (((!en_i) || inv_state))

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-StatusTests
StCtrlReset 1 - - - - - - - - - - - - - - - - - - - - - - - Covered T11,T12,T13
StCtrlReset 0 1 - - - - - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
StCtrlReset 0 0 - - - - - - - - - - - - - - - - - - - - - - Covered T1,T2,T3
StCtrlEntropyReseed - - 1 - - - - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
StCtrlEntropyReseed - - 0 - - - - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
StCtrlRandom - - - 1 - - - - - - - - - - - - - - - - - - - - Unreachable T2,T3,T4
StCtrlRandom - - - 0 - - - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
StCtrlRootKey - - - - 1 - - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
StCtrlRootKey - - - - 0 - - - - - - - - - - - - - - - - - - - Covered T35,T38,T48
StCtrlInit - - - - - 1 - - - - - - - - - - - - - - - - - - Covered T3,T4,T5
StCtrlInit - - - - - 0 - - - - - - - - - - - - - - - - - - Covered T2,T3,T4
StCtrlInit - - - - - - 1 - - - - - - - - - - - - - - - - - Covered T2,T51,T44
StCtrlInit - - - - - - 0 1 - - - - - - - - - - - - - - - - Covered T53,T71,T72
StCtrlInit - - - - - - 0 0 1 - - - - - - - - - - - - - - - Covered T3,T4,T5
StCtrlInit - - - - - - 0 0 0 - - - - - - - - - - - - - - - Covered T2,T3,T4
StCtrlCreatorRootKey - - - - - - - - - 1 - - - - - - - - - - - - - - Covered T14,T52,T53
StCtrlCreatorRootKey - - - - - - - - - 0 1 - - - - - - - - - - - - - Covered T3,T4,T5
StCtrlCreatorRootKey - - - - - - - - - 0 0 - - - - - - - - - - - - - Covered T3,T4,T5
StCtrlCreatorRootKey - - - - - - - - - - - 1 - - - - - - - - - - - - Covered T14,T36,T52
StCtrlCreatorRootKey - - - - - - - - - - - 0 1 - - - - - - - - - - - Covered T53,T69,T70
StCtrlCreatorRootKey - - - - - - - - - - - 0 0 1 - - - - - - - - - - Covered T3,T4,T5
StCtrlCreatorRootKey - - - - - - - - - - - 0 0 0 - - - - - - - - - - Covered T3,T4,T5
StCtrlOwnerIntKey - - - - - - - - - - - - - - 1 - - - - - - - - - Covered T34,T55,T56
StCtrlOwnerIntKey - - - - - - - - - - - - - - 0 1 - - - - - - - - Covered T3,T4,T5
StCtrlOwnerIntKey - - - - - - - - - - - - - - 0 0 - - - - - - - - Covered T3,T4,T5
StCtrlOwnerIntKey - - - - - - - - - - - - - - - - 1 - - - - - - - Covered T57,T59,T60
StCtrlOwnerIntKey - - - - - - - - - - - - - - - - 0 1 - - - - - - Covered T34,T55,T56
StCtrlOwnerIntKey - - - - - - - - - - - - - - - - 0 0 1 - - - - - Covered T3,T4,T5
StCtrlOwnerIntKey - - - - - - - - - - - - - - - - 0 0 0 - - - - - Covered T3,T4,T5
StCtrlOwnerKey - - - - - - - - - - - - - - - - - - - 1 - - - - Covered T3,T4,T5
StCtrlOwnerKey - - - - - - - - - - - - - - - - - - - 0 - - - - Covered T3,T4,T5
StCtrlOwnerKey - - - - - - - - - - - - - - - - - - - - 1 - - - Covered T3,T45,T62
StCtrlOwnerKey - - - - - - - - - - - - - - - - - - - - 0 1 - - Covered T3,T4,T5
StCtrlOwnerKey - - - - - - - - - - - - - - - - - - - - 0 0 - - Covered T3,T4,T5
StCtrlWipe - - - - - - - - - - - - - - - - - - - - - - 1 - Covered T2,T3,T14
StCtrlWipe - - - - - - - - - - - - - - - - - - - - - - 0 - Covered T3,T14,T51
StCtrlDisabled - - - - - - - - - - - - - - - - - - - - - - - 1 Covered T3,T65,T66
StCtrlDisabled - - - - - - - - - - - - - - - - - - - - - - - 0 Covered T3,T4,T5
StCtrlInvalid - - - - - - - - - - - - - - - - - - - - - - - - Covered T2,T3,T14
default - - - - - - - - - - - - - - - - - - - - - - - - Covered T11,T12,T13


LineNo. Expression -1-: 681 if ((!rst_ni)) -2-: 683 if (update_en)

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


LineNo. Expression -1-: 692 case (state_q)

Branches:
-1-StatusTests
StCtrlReset StCtrlEntropyReseed StCtrlRandom Covered T1,T2,T3
StCtrlRootKey StCtrlInit Covered T2,T3,T4
StCtrlCreatorRootKey Covered T3,T4,T5
StCtrlOwnerIntKey Covered T3,T4,T5
StCtrlOwnerKey Covered T3,T4,T5
StCtrlDisabled Covered T3,T4,T5
StCtrlWipe Covered T2,T3,T14
StCtrlInvalid Covered T2,T3,T14
default Covered T11,T12,T13


LineNo. Expression -1-: 726 if (op_done_o) -2-: 730 ((|{error_o, fault_o})) ? -3-: 731 if (op_start_i)

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


LineNo. Expression -1-: 808 if ((!rst_ni))

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


LineNo. Expression -1-: 907 if ((!rst_ni))

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


Assert Coverage for Module : keymgr_ctrl
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 11 11 100.00 10 90.91
Cover properties 0 0 0
Cover sequences 0 0 0
Total 11 11 100.00 10 90.91




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
CntZero_A 20752985 29931 0 0
DataEnDis_A 20515380 29450 0 0
DataEn_A 20515380 5271105 0 0
GeneralLegalCommands_A 21547531 24332 0 0
InitLegalCommands_A 21547531 1123862 0 0
LoadKey_A 21425860 14515314 0 0
OwnerLegalCommands_A 21547531 1165814 0 0
SameErrCnt_A 879 879 0 0
SecCmCFILinear_A 21547531 0 0 4842
StageDisableSel_A 21547531 825270 0 0
u_state_regs_A 21547531 21393880 0 0


CntZero_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 20752985 29931 0 0
T2 4380 14 0 0
T3 43523 137 0 0
T4 58957 23 0 0
T5 10241 16 0 0
T14 12281 8 0 0
T15 6257 41 0 0
T16 1496 11 0 0
T17 909 0 0 0
T18 13077 32 0 0
T34 0 16 0 0
T35 9678 34 0 0

DataEnDis_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 20515380 29450 0 0
T2 4380 14 0 0
T3 43523 137 0 0
T4 58957 23 0 0
T5 10241 16 0 0
T14 12281 8 0 0
T15 6257 41 0 0
T16 1288 8 0 0
T17 909 0 0 0
T18 13077 32 0 0
T34 0 16 0 0
T35 9678 34 0 0

DataEn_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 20515380 5271105 0 0
T2 4380 1593 0 0
T3 43523 887 0 0
T4 58957 14863 0 0
T5 10241 2218 0 0
T14 12281 796 0 0
T15 6257 1750 0 0
T16 1288 66 0 0
T17 909 0 0 0
T18 13077 4064 0 0
T23 0 5310 0 0
T34 0 473 0 0
T35 9678 0 0 0

GeneralLegalCommands_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 21547531 24332 0 0
T23 17802 0 0 0
T34 3250 52 0 0
T44 12390 0 0 0
T51 6913 0 0 0
T56 0 7575 0 0
T69 0 42 0 0
T70 0 441 0 0
T73 0 72 0 0
T74 0 234 0 0
T75 0 4856 0 0
T76 0 42 0 0
T77 0 610 0 0
T78 0 42 0 0
T79 9529 0 0 0
T80 11264 0 0 0
T81 1747 0 0 0
T82 4235 0 0 0
T83 9617 0 0 0
T84 20338 0 0 0

InitLegalCommands_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 21547531 1123862 0 0
T2 4380 1599 0 0
T3 43523 170 0 0
T4 58957 1582 0 0
T5 10241 364 0 0
T14 12281 469 0 0
T15 6257 0 0 0
T16 1496 39 0 0
T17 909 0 0 0
T18 13077 747 0 0
T23 0 2451 0 0
T34 0 96 0 0
T35 9678 0 0 0
T79 0 249 0 0

LoadKey_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 21425860 14515314 0 0
T2 4380 1599 0 0
T3 43523 2353 0 0
T4 58957 53918 0 0
T5 10241 8621 0 0
T14 12281 1651 0 0
T15 6257 2936 0 0
T16 1496 168 0 0
T17 909 0 0 0
T18 13077 10383 0 0
T23 0 11362 0 0
T34 0 847 0 0
T35 9678 0 0 0

OwnerLegalCommands_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 21547531 1165814 0 0
T3 43523 126 0 0
T4 58957 5190 0 0
T5 10241 936 0 0
T14 12281 0 0 0
T15 6257 129 0 0
T16 1496 0 0 0
T17 909 0 0 0
T18 13077 989 0 0
T23 0 873 0 0
T34 3250 0 0 0
T35 9678 0 0 0
T65 0 11096 0 0
T79 0 753 0 0
T83 0 534 0 0
T84 0 1954 0 0

SameErrCnt_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 879 879 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T5 1 1 0 0
T14 1 1 0 0
T15 1 1 0 0
T16 1 1 0 0
T17 1 1 0 0
T18 1 1 0 0

SecCmCFILinear_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 21547531 0 0 4842

StageDisableSel_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 21547531 825270 0 0
T1 1259 138 0 0
T2 4380 47 0 0
T3 43523 8579 0 0
T4 58957 37 0 0
T5 10241 31 0 0
T14 12281 7928 0 0
T15 6257 25 0 0
T16 1496 30 0 0
T17 909 42 0 0
T18 13077 35 0 0

u_state_regs_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 21547531 21393880 0 0
T1 1259 1200 0 0
T2 4380 4234 0 0
T3 43523 42909 0 0
T4 58957 58897 0 0
T5 10241 10173 0 0
T14 12281 12215 0 0
T15 6257 6204 0 0
T16 1496 1413 0 0
T17 909 855 0 0
T18 13077 12991 0 0

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