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



Module Instance : tb.dut.u_to_rd_fifo.u_err

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
66.91 76.92 65.71 25.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
66.91 76.92 65.71 25.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
92.89 100.00 75.00 96.55 100.00 u_to_rd_fifo


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
no children



Module Instance : tb.dut.u_tl_adapter_eflash.u_err

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
73.63 88.46 68.57 37.50 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
73.63 88.46 68.57 37.50 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
94.06 100.00 79.69 96.55 100.00 u_tl_adapter_eflash


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
no children



Module Instance : tb.dut.u_to_prog_fifo.u_err

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
79.64 100.00 68.57 50.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
79.64 100.00 68.57 50.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
83.96 100.00 65.52 85.71 84.62 u_to_prog_fifo


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
no children



Module Instance : tb.dut.u_reg_core.u_reg_if.u_err

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
100.00 100.00 100.00 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
100.00 100.00 100.00 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
97.96 100.00 91.84 100.00 100.00 u_reg_if


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
no children



Module Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.u_reg_top.u_reg_if.u_err

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
100.00 100.00 100.00 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
100.00 100.00 100.00 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
98.91 100.00 95.65 100.00 100.00 u_reg_if


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
no children

Line Coverage for Module : tlul_err
Line No.TotalCoveredPercent
TOTAL2626100.00
CONT_ASSIGN2611100.00
CONT_ASSIGN2711100.00
CONT_ASSIGN2811100.00
CONT_ASSIGN3211100.00
CONT_ASSIGN3611100.00
CONT_ASSIGN3911100.00
CONT_ASSIGN4211100.00
CONT_ASSIGN5411100.00
ALWAYS571717100.00
CONT_ASSIGN9611100.00

25 logic op_full, op_partial, op_get; 26 1/1 assign op_full = (tl_i.a_opcode == PutFullData); Tests: T1 T2 T3  27 1/1 assign op_partial = (tl_i.a_opcode == PutPartialData); Tests: T1 T2 T3  28 1/1 assign op_get = (tl_i.a_opcode == Get); Tests: T1 T2 T3  29 30 // An instruction type transaction cannot be write 31 logic instr_wr_err; 32 1/1 assign instr_wr_err = prim_mubi_pkg::mubi4_test_true_strict(tl_i.a_user.instr_type) & Tests: T1 T2 T3  33 (op_full | op_partial); 34 35 logic instr_type_err; 36 1/1 assign instr_type_err = prim_mubi_pkg::mubi4_test_invalid(tl_i.a_user.instr_type); Tests: T1 T2 T3  37 38 // Anything that doesn't fall into the permitted category, it raises an error 39 1/1 assign err_o = ~(opcode_allowed & a_config_allowed) | instr_wr_err | instr_type_err; Tests: T1 T2 T3  40 41 // opcode check 42 1/1 assign opcode_allowed = (tl_i.a_opcode == PutFullData) Tests: T1 T2 T3  43 | (tl_i.a_opcode == PutPartialData) 44 | (tl_i.a_opcode == Get); 45 46 // a channel configuration check 47 logic addr_sz_chk; // address and size alignment check 48 logic mask_chk; // inactive lane a_mask check 49 logic fulldata_chk; // PutFullData should have size match to mask 50 51 localparam bit [MW-1:0] MaskOne = 1; 52 logic [MW-1:0] mask; 53 54 1/1 assign mask = MaskOne << tl_i.a_address[SubAW-1:0]; Tests: T1 T2 T3  55 56 always_comb begin 57 1/1 addr_sz_chk = 1'b0; Tests: T1 T2 T3  58 1/1 mask_chk = 1'b0; Tests: T1 T2 T3  59 1/1 fulldata_chk = 1'b0; // Only valid when opcode is PutFullData Tests: T1 T2 T3  60 61 1/1 if (tl_i.a_valid) begin Tests: T1 T2 T3  62 1/1 unique case (tl_i.a_size) Tests: T1 T2 T3  63 'h0: begin // 1 Byte 64 1/1 addr_sz_chk = 1'b1; Tests: T1 T2 T3  65 1/1 mask_chk = ~|(tl_i.a_mask & ~mask); Tests: T1 T2 T3  66 1/1 fulldata_chk = |(tl_i.a_mask & mask); Tests: T1 T2 T3  67 end 68 69 'h1: begin // 2 Byte 70 1/1 addr_sz_chk = ~tl_i.a_address[0]; Tests: T1 T2 T3  71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 1/1 mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) Tests: T1 T2 T3  73 : ~|(tl_i.a_mask & 4'b1100); 74 1/1 fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; Tests: T1 T2 T3  75 end 76 77 'h2: begin // 4 Byte 78 1/1 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; Tests: T1 T2 T3  79 1/1 mask_chk = 1'b1; Tests: T1 T2 T3  80 1/1 fulldata_chk = &tl_i.a_mask[3:0]; Tests: T1 T2 T3  81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 1/1 addr_sz_chk = 1'b0; Tests: T1 T2 T3  91 1/1 mask_chk = 1'b0; Tests: T1 T2 T3  92 1/1 fulldata_chk = 1'b0; Tests: T1 T2 T3  93 end 94 end 95 96 1/1 assign a_config_allowed = addr_sz_chk Tests: T1 T2 T3 

Cond Coverage for Module : tlul_err
TotalCoveredPercent
Conditions3535100.00
Logical3535100.00
Non-Logical00
Event00

 LINE       26
 EXPRESSION (tl_i.a_opcode == PutFullData)
            ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       27
 EXPRESSION (tl_i.a_opcode == PutPartialData)
            ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       28
 EXPRESSION (tl_i.a_opcode == Get)
            -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       39
 EXPRESSION (( ~ (opcode_allowed & a_config_allowed) ) | instr_wr_err | instr_type_err)
             --------------------1--------------------   ------2-----   -------3------
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT13,T51,T59
010CoveredT112,T113,T81
100CoveredT1,T2,T3

 LINE       39
 SUB-EXPRESSION (opcode_allowed & a_config_allowed)
                 -------1------   --------2-------
-1--2-StatusTests
01CoveredT112,T113,T81
10CoveredT1,T2,T3
11CoveredT1,T2,T3

 LINE       42
 EXPRESSION ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData) | (tl_i.a_opcode == Get))
             ---------------1--------------   ----------------2----------------   -----------3----------
-1--2--3-StatusTests
000CoveredT112,T113,T81
001CoveredT1,T2,T3
010CoveredT1,T2,T3
100CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutFullData)
                ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutPartialData)
                ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == Get)
                -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       72
 EXPRESSION (tl_i.a_address[1] ? ((~|(tl_i.a_mask & 4'b0011))) : ((~|(tl_i.a_mask & 4'b1100))))
             --------1--------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T13,T14

 LINE       74
 EXPRESSION (tl_i.a_address[1] ? ((&tl_i.a_mask[3:2])) : ((&tl_i.a_mask[1:0])))
             --------1--------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T13,T14

 LINE       96
 EXPRESSION (addr_sz_chk & mask_chk & (op_get | op_partial | fulldata_chk))
             -----1-----   ----2---   ------------------3-----------------
-1--2--3-StatusTests
011CoveredT112,T113,T81
101CoveredT112,T113,T81
110CoveredT112,T113,T81
111CoveredT1,T2,T3

 LINE       96
 SUB-EXPRESSION (op_get | op_partial | fulldata_chk)
                 ---1--   -----2----   ------3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT1,T2,T3
010CoveredT1,T2,T3
100CoveredT1,T2,T3

Branch Coverage for Module : tlul_err
Line No.TotalCoveredPercent
Branches 8 8 100.00
IF 61 8 8 100.00


61 if (tl_i.a_valid) begin -1- 62 unique case (tl_i.a_size) -2- 63 'h0: begin // 1 Byte 64 addr_sz_chk = 1'b1; ==> 65 mask_chk = ~|(tl_i.a_mask & ~mask); 66 fulldata_chk = |(tl_i.a_mask & mask); 67 end 68 69 'h1: begin // 2 Byte 70 addr_sz_chk = ~tl_i.a_address[0]; 71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) -3- ==> ==> 73 : ~|(tl_i.a_mask & 4'b1100); 74 fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; -4- ==> ==> 75 end 76 77 'h2: begin // 4 Byte 78 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; ==> 79 mask_chk = 1'b1; 80 fulldata_chk = &tl_i.a_mask[3:0]; 81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; ==> 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 addr_sz_chk = 1'b0; ==>

Branches:
-1--2--3--4-StatusTests
1 'h0 - - Covered T1,T2,T3
1 'h1 1 - Covered T1,T13,T14
1 'h1 0 - Covered T1,T2,T3
1 'h1 - 1 Covered T1,T13,T14
1 'h1 - 0 Covered T1,T2,T3
1 'h00000002 - - Covered T1,T2,T3
1 default - - Covered T12,T112,T113
0 - - - Covered T1,T2,T3


Assert Coverage for Module : tlul_err
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 1 1 100.00 1 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 1 1 100.00 1 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
dataWidthOnly32_A 5640 5640 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 5640 5640 0 0
T1 5 5 0 0
T2 5 5 0 0
T3 5 5 0 0
T7 5 5 0 0
T13 5 5 0 0
T14 5 5 0 0
T15 5 5 0 0
T18 5 5 0 0
T19 5 5 0 0
T20 5 5 0 0

Line Coverage for Instance : tb.dut.u_to_rd_fifo.u_err
Line No.TotalCoveredPercent
TOTAL262076.92
CONT_ASSIGN2611100.00
CONT_ASSIGN2711100.00
CONT_ASSIGN2811100.00
CONT_ASSIGN3211100.00
CONT_ASSIGN3611100.00
CONT_ASSIGN3911100.00
CONT_ASSIGN4211100.00
CONT_ASSIGN5411100.00
ALWAYS57171164.71
CONT_ASSIGN9611100.00

25 logic op_full, op_partial, op_get; 26 1/1 assign op_full = (tl_i.a_opcode == PutFullData); Tests: T1 T2 T3  27 1/1 assign op_partial = (tl_i.a_opcode == PutPartialData); Tests: T1 T2 T3  28 1/1 assign op_get = (tl_i.a_opcode == Get); Tests: T1 T2 T3  29 30 // An instruction type transaction cannot be write 31 logic instr_wr_err; 32 1/1 assign instr_wr_err = prim_mubi_pkg::mubi4_test_true_strict(tl_i.a_user.instr_type) & Tests: T1 T2 T3  33 (op_full | op_partial); 34 35 logic instr_type_err; 36 1/1 assign instr_type_err = prim_mubi_pkg::mubi4_test_invalid(tl_i.a_user.instr_type); Tests: T1 T2 T3  37 38 // Anything that doesn't fall into the permitted category, it raises an error 39 1/1 assign err_o = ~(opcode_allowed & a_config_allowed) | instr_wr_err | instr_type_err; Tests: T1 T2 T3  40 41 // opcode check 42 1/1 assign opcode_allowed = (tl_i.a_opcode == PutFullData) Tests: T1 T2 T3  43 | (tl_i.a_opcode == PutPartialData) 44 | (tl_i.a_opcode == Get); 45 46 // a channel configuration check 47 logic addr_sz_chk; // address and size alignment check 48 logic mask_chk; // inactive lane a_mask check 49 logic fulldata_chk; // PutFullData should have size match to mask 50 51 localparam bit [MW-1:0] MaskOne = 1; 52 logic [MW-1:0] mask; 53 54 1/1 assign mask = MaskOne << tl_i.a_address[SubAW-1:0]; Tests: T1 T2 T3  55 56 always_comb begin 57 1/1 addr_sz_chk = 1'b0; Tests: T1 T2 T3  58 1/1 mask_chk = 1'b0; Tests: T1 T2 T3  59 1/1 fulldata_chk = 1'b0; // Only valid when opcode is PutFullData Tests: T1 T2 T3  60 61 1/1 if (tl_i.a_valid) begin Tests: T1 T2 T3  62 1/1 unique case (tl_i.a_size) Tests: T2 T3 T13  63 'h0: begin // 1 Byte 64 0/1 ==> addr_sz_chk = 1'b1; 65 0/1 ==> mask_chk = ~|(tl_i.a_mask & ~mask); 66 0/1 ==> fulldata_chk = |(tl_i.a_mask & mask); 67 end 68 69 'h1: begin // 2 Byte 70 0/1 ==> addr_sz_chk = ~tl_i.a_address[0]; 71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 0/1 ==> mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) 73 : ~|(tl_i.a_mask & 4'b1100); 74 0/1 ==> fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; 75 end 76 77 'h2: begin // 4 Byte 78 1/1 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; Tests: T2 T3 T13  79 1/1 mask_chk = 1'b1; Tests: T2 T3 T13  80 1/1 fulldata_chk = &tl_i.a_mask[3:0]; Tests: T2 T3 T13  81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 1/1 addr_sz_chk = 1'b0; Tests: T1 T2 T3  91 1/1 mask_chk = 1'b0; Tests: T1 T2 T3  92 1/1 fulldata_chk = 1'b0; Tests: T1 T2 T3  93 end 94 end 95 96 1/1 assign a_config_allowed = addr_sz_chk Tests: T1 T2 T3 

Cond Coverage for Instance : tb.dut.u_to_rd_fifo.u_err
TotalCoveredPercent
Conditions352365.71
Logical352365.71
Non-Logical00
Event00

 LINE       26
 EXPRESSION (tl_i.a_opcode == PutFullData)
            ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       27
 EXPRESSION (tl_i.a_opcode == PutPartialData)
            ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       28
 EXPRESSION (tl_i.a_opcode == Get)
            -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       39
 EXPRESSION (( ~ (opcode_allowed & a_config_allowed) ) | instr_wr_err | instr_type_err)
             --------------------1--------------------   ------2-----   -------3------
-1--2--3-StatusTests
000CoveredT2,T3,T13
001Not Covered
010Not Covered
100CoveredT1,T2,T3

 LINE       39
 SUB-EXPRESSION (opcode_allowed & a_config_allowed)
                 -------1------   --------2-------
-1--2-StatusTests
01Not Covered
10CoveredT1,T2,T3
11CoveredT2,T3,T13

 LINE       42
 EXPRESSION ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData) | (tl_i.a_opcode == Get))
             ---------------1--------------   ----------------2----------------   -----------3----------
-1--2--3-StatusTests
000Not Covered
001CoveredT1,T2,T3
010CoveredT1,T2,T3
100CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutFullData)
                ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutPartialData)
                ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == Get)
                -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       72
 EXPRESSION (tl_i.a_address[1] ? ((~|(tl_i.a_mask & 4'b0011))) : ((~|(tl_i.a_mask & 4'b1100))))
             --------1--------
-1-StatusTests
0Not Covered
1Not Covered

 LINE       74
 EXPRESSION (tl_i.a_address[1] ? ((&tl_i.a_mask[3:2])) : ((&tl_i.a_mask[1:0])))
             --------1--------
-1-StatusTests
0Not Covered
1Not Covered

 LINE       96
 EXPRESSION (addr_sz_chk & mask_chk & (op_get | op_partial | fulldata_chk))
             -----1-----   ----2---   ------------------3-----------------
-1--2--3-StatusTests
011Not Covered
101Not Covered
110Not Covered
111CoveredT2,T3,T13

 LINE       96
 SUB-EXPRESSION (op_get | op_partial | fulldata_chk)
                 ---1--   -----2----   ------3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001Not Covered
010CoveredT1,T2,T3
100CoveredT1,T2,T3

Branch Coverage for Instance : tb.dut.u_to_rd_fifo.u_err
Line No.TotalCoveredPercent
Branches 8 2 25.00
IF 61 8 2 25.00


61 if (tl_i.a_valid) begin -1- 62 unique case (tl_i.a_size) -2- 63 'h0: begin // 1 Byte 64 addr_sz_chk = 1'b1; ==> 65 mask_chk = ~|(tl_i.a_mask & ~mask); 66 fulldata_chk = |(tl_i.a_mask & mask); 67 end 68 69 'h1: begin // 2 Byte 70 addr_sz_chk = ~tl_i.a_address[0]; 71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) -3- ==> ==> 73 : ~|(tl_i.a_mask & 4'b1100); 74 fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; -4- ==> ==> 75 end 76 77 'h2: begin // 4 Byte 78 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; ==> 79 mask_chk = 1'b1; 80 fulldata_chk = &tl_i.a_mask[3:0]; 81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; ==> 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 addr_sz_chk = 1'b0; ==>

Branches:
-1--2--3--4-StatusTests
1 'h0 - - Not Covered
1 'h1 1 - Not Covered
1 'h1 0 - Not Covered
1 'h1 - 1 Not Covered
1 'h1 - 0 Not Covered
1 'h00000002 - - Covered T2,T3,T13
1 default - - Not Covered
0 - - - Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_to_rd_fifo.u_err
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 1 1 100.00 1 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 1 1 100.00 1 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
dataWidthOnly32_A 1042 1042 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1042 1042 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T7 1 1 0 0
T13 1 1 0 0
T14 1 1 0 0
T15 1 1 0 0
T18 1 1 0 0
T19 1 1 0 0
T20 1 1 0 0

Line Coverage for Instance : tb.dut.u_tl_adapter_eflash.u_err
Line No.TotalCoveredPercent
TOTAL262388.46
CONT_ASSIGN2611100.00
CONT_ASSIGN2711100.00
CONT_ASSIGN2811100.00
CONT_ASSIGN3211100.00
CONT_ASSIGN3611100.00
CONT_ASSIGN3911100.00
CONT_ASSIGN4211100.00
CONT_ASSIGN5411100.00
ALWAYS57171482.35
CONT_ASSIGN9611100.00

25 logic op_full, op_partial, op_get; 26 1/1 assign op_full = (tl_i.a_opcode == PutFullData); Tests: T1 T2 T3  27 1/1 assign op_partial = (tl_i.a_opcode == PutPartialData); Tests: T1 T2 T3  28 1/1 assign op_get = (tl_i.a_opcode == Get); Tests: T1 T2 T3  29 30 // An instruction type transaction cannot be write 31 logic instr_wr_err; 32 1/1 assign instr_wr_err = prim_mubi_pkg::mubi4_test_true_strict(tl_i.a_user.instr_type) & Tests: T1 T2 T3  33 (op_full | op_partial); 34 35 logic instr_type_err; 36 1/1 assign instr_type_err = prim_mubi_pkg::mubi4_test_invalid(tl_i.a_user.instr_type); Tests: T1 T2 T3  37 38 // Anything that doesn't fall into the permitted category, it raises an error 39 1/1 assign err_o = ~(opcode_allowed & a_config_allowed) | instr_wr_err | instr_type_err; Tests: T1 T2 T3  40 41 // opcode check 42 1/1 assign opcode_allowed = (tl_i.a_opcode == PutFullData) Tests: T1 T2 T3  43 | (tl_i.a_opcode == PutPartialData) 44 | (tl_i.a_opcode == Get); 45 46 // a channel configuration check 47 logic addr_sz_chk; // address and size alignment check 48 logic mask_chk; // inactive lane a_mask check 49 logic fulldata_chk; // PutFullData should have size match to mask 50 51 localparam bit [MW-1:0] MaskOne = 1; 52 logic [MW-1:0] mask; 53 54 1/1 assign mask = MaskOne << tl_i.a_address[SubAW-1:0]; Tests: T1 T2 T3  55 56 always_comb begin 57 1/1 addr_sz_chk = 1'b0; Tests: T1 T2 T3  58 1/1 mask_chk = 1'b0; Tests: T1 T2 T3  59 1/1 fulldata_chk = 1'b0; // Only valid when opcode is PutFullData Tests: T1 T2 T3  60 61 1/1 if (tl_i.a_valid) begin Tests: T1 T2 T3  62 1/1 unique case (tl_i.a_size) Tests: T1 T13 T14  63 'h0: begin // 1 Byte 64 1/1 addr_sz_chk = 1'b1; Tests: T12  65 1/1 mask_chk = ~|(tl_i.a_mask & ~mask); Tests: T12  66 1/1 fulldata_chk = |(tl_i.a_mask & mask); Tests: T12  67 end 68 69 'h1: begin // 2 Byte 70 0/1 ==> addr_sz_chk = ~tl_i.a_address[0]; 71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 0/1 ==> mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) 73 : ~|(tl_i.a_mask & 4'b1100); 74 0/1 ==> fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; 75 end 76 77 'h2: begin // 4 Byte 78 1/1 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; Tests: T1 T13 T14  79 1/1 mask_chk = 1'b1; Tests: T1 T13 T14  80 1/1 fulldata_chk = &tl_i.a_mask[3:0]; Tests: T1 T13 T14  81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 1/1 addr_sz_chk = 1'b0; Tests: T1 T2 T3  91 1/1 mask_chk = 1'b0; Tests: T1 T2 T3  92 1/1 fulldata_chk = 1'b0; Tests: T1 T2 T3  93 end 94 end 95 96 1/1 assign a_config_allowed = addr_sz_chk Tests: T1 T2 T3 

Cond Coverage for Instance : tb.dut.u_tl_adapter_eflash.u_err
TotalCoveredPercent
Conditions352468.57
Logical352468.57
Non-Logical00
Event00

 LINE       26
 EXPRESSION (tl_i.a_opcode == PutFullData)
            ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       27
 EXPRESSION (tl_i.a_opcode == PutPartialData)
            ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T20,T7

 LINE       28
 EXPRESSION (tl_i.a_opcode == Get)
            -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T13,T14

 LINE       39
 EXPRESSION (( ~ (opcode_allowed & a_config_allowed) ) | instr_wr_err | instr_type_err)
             --------------------1--------------------   ------2-----   -------3------
-1--2--3-StatusTests
000CoveredT1,T13,T14
001CoveredT13,T51,T59
010Not Covered
100CoveredT20,T7,T58

 LINE       39
 SUB-EXPRESSION (opcode_allowed & a_config_allowed)
                 -------1------   --------2-------
-1--2-StatusTests
01Not Covered
10CoveredT1,T2,T3
11CoveredT1,T13,T14

 LINE       42
 EXPRESSION ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData) | (tl_i.a_opcode == Get))
             ---------------1--------------   ----------------2----------------   -----------3----------
-1--2--3-StatusTests
000Not Covered
001CoveredT1,T13,T14
010CoveredT3,T20,T7
100CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutFullData)
                ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutPartialData)
                ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T20,T7

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == Get)
                -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T13,T14

 LINE       72
 EXPRESSION (tl_i.a_address[1] ? ((~|(tl_i.a_mask & 4'b0011))) : ((~|(tl_i.a_mask & 4'b1100))))
             --------1--------
-1-StatusTests
0Not Covered
1Not Covered

 LINE       74
 EXPRESSION (tl_i.a_address[1] ? ((&tl_i.a_mask[3:2])) : ((&tl_i.a_mask[1:0])))
             --------1--------
-1-StatusTests
0Not Covered
1Not Covered

 LINE       96
 EXPRESSION (addr_sz_chk & mask_chk & (op_get | op_partial | fulldata_chk))
             -----1-----   ----2---   ------------------3-----------------
-1--2--3-StatusTests
011Not Covered
101Not Covered
110Not Covered
111CoveredT1,T13,T14

 LINE       96
 SUB-EXPRESSION (op_get | op_partial | fulldata_chk)
                 ---1--   -----2----   ------3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001Not Covered
010CoveredT3,T20,T7
100CoveredT20,T7,T58

Branch Coverage for Instance : tb.dut.u_tl_adapter_eflash.u_err
Line No.TotalCoveredPercent
Branches 8 3 37.50
IF 61 8 3 37.50


61 if (tl_i.a_valid) begin -1- 62 unique case (tl_i.a_size) -2- 63 'h0: begin // 1 Byte 64 addr_sz_chk = 1'b1; ==> 65 mask_chk = ~|(tl_i.a_mask & ~mask); 66 fulldata_chk = |(tl_i.a_mask & mask); 67 end 68 69 'h1: begin // 2 Byte 70 addr_sz_chk = ~tl_i.a_address[0]; 71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) -3- ==> ==> 73 : ~|(tl_i.a_mask & 4'b1100); 74 fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; -4- ==> ==> 75 end 76 77 'h2: begin // 4 Byte 78 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; ==> 79 mask_chk = 1'b1; 80 fulldata_chk = &tl_i.a_mask[3:0]; 81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; ==> 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 addr_sz_chk = 1'b0; ==>

Branches:
-1--2--3--4-StatusTests
1 'h0 - - Covered T12
1 'h1 1 - Not Covered
1 'h1 0 - Not Covered
1 'h1 - 1 Not Covered
1 'h1 - 0 Not Covered
1 'h00000002 - - Covered T1,T13,T14
1 default - - Not Covered
0 - - - Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_tl_adapter_eflash.u_err
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 1 1 100.00 1 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 1 1 100.00 1 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
dataWidthOnly32_A 1042 1042 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1042 1042 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T7 1 1 0 0
T13 1 1 0 0
T14 1 1 0 0
T15 1 1 0 0
T18 1 1 0 0
T19 1 1 0 0
T20 1 1 0 0

Line Coverage for Instance : tb.dut.u_to_prog_fifo.u_err
Line No.TotalCoveredPercent
TOTAL2626100.00
CONT_ASSIGN2611100.00
CONT_ASSIGN2711100.00
CONT_ASSIGN2811100.00
CONT_ASSIGN3211100.00
CONT_ASSIGN3611100.00
CONT_ASSIGN3911100.00
CONT_ASSIGN4211100.00
CONT_ASSIGN5411100.00
ALWAYS571717100.00
CONT_ASSIGN9611100.00

25 logic op_full, op_partial, op_get; 26 1/1 assign op_full = (tl_i.a_opcode == PutFullData); Tests: T1 T2 T3  27 1/1 assign op_partial = (tl_i.a_opcode == PutPartialData); Tests: T1 T2 T3  28 1/1 assign op_get = (tl_i.a_opcode == Get); Tests: T1 T2 T3  29 30 // An instruction type transaction cannot be write 31 logic instr_wr_err; 32 1/1 assign instr_wr_err = prim_mubi_pkg::mubi4_test_true_strict(tl_i.a_user.instr_type) & Tests: T1 T2 T3  33 (op_full | op_partial); 34 35 logic instr_type_err; 36 1/1 assign instr_type_err = prim_mubi_pkg::mubi4_test_invalid(tl_i.a_user.instr_type); Tests: T1 T2 T3  37 38 // Anything that doesn't fall into the permitted category, it raises an error 39 1/1 assign err_o = ~(opcode_allowed & a_config_allowed) | instr_wr_err | instr_type_err; Tests: T1 T2 T3  40 41 // opcode check 42 1/1 assign opcode_allowed = (tl_i.a_opcode == PutFullData) Tests: T1 T2 T3  43 | (tl_i.a_opcode == PutPartialData) 44 | (tl_i.a_opcode == Get); 45 46 // a channel configuration check 47 logic addr_sz_chk; // address and size alignment check 48 logic mask_chk; // inactive lane a_mask check 49 logic fulldata_chk; // PutFullData should have size match to mask 50 51 localparam bit [MW-1:0] MaskOne = 1; 52 logic [MW-1:0] mask; 53 54 1/1 assign mask = MaskOne << tl_i.a_address[SubAW-1:0]; Tests: T1 T2 T3  55 56 always_comb begin 57 1/1 addr_sz_chk = 1'b0; Tests: T1 T2 T3  58 1/1 mask_chk = 1'b0; Tests: T1 T2 T3  59 1/1 fulldata_chk = 1'b0; // Only valid when opcode is PutFullData Tests: T1 T2 T3  60 61 1/1 if (tl_i.a_valid) begin Tests: T1 T2 T3  62 1/1 unique case (tl_i.a_size) Tests: T2 T3 T14  63 'h0: begin // 1 Byte 64 1/1 addr_sz_chk = 1'b1; Tests: T12  65 1/1 mask_chk = ~|(tl_i.a_mask & ~mask); Tests: T12  66 1/1 fulldata_chk = |(tl_i.a_mask & mask); Tests: T12  67 end 68 69 'h1: begin // 2 Byte 70 1/1 addr_sz_chk = ~tl_i.a_address[0]; Tests: T12  71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 1/1 mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) Tests: T12  73 : ~|(tl_i.a_mask & 4'b1100); 74 1/1 fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; Tests: T12  75 end 76 77 'h2: begin // 4 Byte 78 1/1 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; Tests: T2 T3 T14  79 1/1 mask_chk = 1'b1; Tests: T2 T3 T14  80 1/1 fulldata_chk = &tl_i.a_mask[3:0]; Tests: T2 T3 T14  81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 1/1 addr_sz_chk = 1'b0; Tests: T1 T2 T3  91 1/1 mask_chk = 1'b0; Tests: T1 T2 T3  92 1/1 fulldata_chk = 1'b0; Tests: T1 T2 T3  93 end 94 end 95 96 1/1 assign a_config_allowed = addr_sz_chk Tests: T1 T2 T3 

Cond Coverage for Instance : tb.dut.u_to_prog_fifo.u_err
TotalCoveredPercent
Conditions352468.57
Logical352468.57
Non-Logical00
Event00

 LINE       26
 EXPRESSION (tl_i.a_opcode == PutFullData)
            ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       27
 EXPRESSION (tl_i.a_opcode == PutPartialData)
            ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       28
 EXPRESSION (tl_i.a_opcode == Get)
            -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       39
 EXPRESSION (( ~ (opcode_allowed & a_config_allowed) ) | instr_wr_err | instr_type_err)
             --------------------1--------------------   ------2-----   -------3------
-1--2--3-StatusTests
000CoveredT2,T3,T14
001Not Covered
010Not Covered
100CoveredT1,T2,T3

 LINE       39
 SUB-EXPRESSION (opcode_allowed & a_config_allowed)
                 -------1------   --------2-------
-1--2-StatusTests
01Not Covered
10CoveredT1,T2,T3
11CoveredT2,T3,T14

 LINE       42
 EXPRESSION ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData) | (tl_i.a_opcode == Get))
             ---------------1--------------   ----------------2----------------   -----------3----------
-1--2--3-StatusTests
000Not Covered
001CoveredT1,T2,T3
010CoveredT1,T2,T3
100CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutFullData)
                ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutPartialData)
                ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == Get)
                -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       72
 EXPRESSION (tl_i.a_address[1] ? ((~|(tl_i.a_mask & 4'b0011))) : ((~|(tl_i.a_mask & 4'b1100))))
             --------1--------
-1-StatusTests
0Not Covered
1Not Covered

 LINE       74
 EXPRESSION (tl_i.a_address[1] ? ((&tl_i.a_mask[3:2])) : ((&tl_i.a_mask[1:0])))
             --------1--------
-1-StatusTests
0Not Covered
1Not Covered

 LINE       96
 EXPRESSION (addr_sz_chk & mask_chk & (op_get | op_partial | fulldata_chk))
             -----1-----   ----2---   ------------------3-----------------
-1--2--3-StatusTests
011Not Covered
101Not Covered
110Not Covered
111CoveredT2,T3,T14

 LINE       96
 SUB-EXPRESSION (op_get | op_partial | fulldata_chk)
                 ---1--   -----2----   ------3-----
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT2,T3,T14
010CoveredT1,T2,T3
100CoveredT1,T2,T3

Branch Coverage for Instance : tb.dut.u_to_prog_fifo.u_err
Line No.TotalCoveredPercent
Branches 8 4 50.00
IF 61 8 4 50.00


61 if (tl_i.a_valid) begin -1- 62 unique case (tl_i.a_size) -2- 63 'h0: begin // 1 Byte 64 addr_sz_chk = 1'b1; ==> 65 mask_chk = ~|(tl_i.a_mask & ~mask); 66 fulldata_chk = |(tl_i.a_mask & mask); 67 end 68 69 'h1: begin // 2 Byte 70 addr_sz_chk = ~tl_i.a_address[0]; 71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) -3- ==> ==> 73 : ~|(tl_i.a_mask & 4'b1100); 74 fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; -4- ==> ==> 75 end 76 77 'h2: begin // 4 Byte 78 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; ==> 79 mask_chk = 1'b1; 80 fulldata_chk = &tl_i.a_mask[3:0]; 81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; ==> 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 addr_sz_chk = 1'b0; ==>

Branches:
-1--2--3--4-StatusTests
1 'h0 - - Covered T12
1 'h1 1 - Not Covered
1 'h1 0 - Not Covered
1 'h1 - 1 Not Covered
1 'h1 - 0 Not Covered
1 'h00000002 - - Covered T2,T3,T14
1 default - - Covered T12
0 - - - Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_to_prog_fifo.u_err
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 1 1 100.00 1 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 1 1 100.00 1 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
dataWidthOnly32_A 1042 1042 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1042 1042 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T7 1 1 0 0
T13 1 1 0 0
T14 1 1 0 0
T15 1 1 0 0
T18 1 1 0 0
T19 1 1 0 0
T20 1 1 0 0

Line Coverage for Instance : tb.dut.u_reg_core.u_reg_if.u_err
Line No.TotalCoveredPercent
TOTAL2626100.00
CONT_ASSIGN2611100.00
CONT_ASSIGN2711100.00
CONT_ASSIGN2811100.00
CONT_ASSIGN3211100.00
CONT_ASSIGN3611100.00
CONT_ASSIGN3911100.00
CONT_ASSIGN4211100.00
CONT_ASSIGN5411100.00
ALWAYS571717100.00
CONT_ASSIGN9611100.00

25 logic op_full, op_partial, op_get; 26 1/1 assign op_full = (tl_i.a_opcode == PutFullData); Tests: T1 T2 T3  27 1/1 assign op_partial = (tl_i.a_opcode == PutPartialData); Tests: T1 T2 T3  28 1/1 assign op_get = (tl_i.a_opcode == Get); Tests: T1 T2 T3  29 30 // An instruction type transaction cannot be write 31 logic instr_wr_err; 32 1/1 assign instr_wr_err = prim_mubi_pkg::mubi4_test_true_strict(tl_i.a_user.instr_type) & Tests: T1 T2 T3  33 (op_full | op_partial); 34 35 logic instr_type_err; 36 1/1 assign instr_type_err = prim_mubi_pkg::mubi4_test_invalid(tl_i.a_user.instr_type); Tests: T1 T2 T3  37 38 // Anything that doesn't fall into the permitted category, it raises an error 39 1/1 assign err_o = ~(opcode_allowed & a_config_allowed) | instr_wr_err | instr_type_err; Tests: T1 T2 T3  40 41 // opcode check 42 1/1 assign opcode_allowed = (tl_i.a_opcode == PutFullData) Tests: T1 T2 T3  43 | (tl_i.a_opcode == PutPartialData) 44 | (tl_i.a_opcode == Get); 45 46 // a channel configuration check 47 logic addr_sz_chk; // address and size alignment check 48 logic mask_chk; // inactive lane a_mask check 49 logic fulldata_chk; // PutFullData should have size match to mask 50 51 localparam bit [MW-1:0] MaskOne = 1; 52 logic [MW-1:0] mask; 53 54 1/1 assign mask = MaskOne << tl_i.a_address[SubAW-1:0]; Tests: T1 T2 T3  55 56 always_comb begin 57 1/1 addr_sz_chk = 1'b0; Tests: T1 T2 T3  58 1/1 mask_chk = 1'b0; Tests: T1 T2 T3  59 1/1 fulldata_chk = 1'b0; // Only valid when opcode is PutFullData Tests: T1 T2 T3  60 61 1/1 if (tl_i.a_valid) begin Tests: T1 T2 T3  62 1/1 unique case (tl_i.a_size) Tests: T1 T2 T3  63 'h0: begin // 1 Byte 64 1/1 addr_sz_chk = 1'b1; Tests: T1 T2 T3  65 1/1 mask_chk = ~|(tl_i.a_mask & ~mask); Tests: T1 T2 T3  66 1/1 fulldata_chk = |(tl_i.a_mask & mask); Tests: T1 T2 T3  67 end 68 69 'h1: begin // 2 Byte 70 1/1 addr_sz_chk = ~tl_i.a_address[0]; Tests: T1 T2 T3  71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 1/1 mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) Tests: T1 T2 T3  73 : ~|(tl_i.a_mask & 4'b1100); 74 1/1 fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; Tests: T1 T2 T3  75 end 76 77 'h2: begin // 4 Byte 78 1/1 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; Tests: T1 T2 T3  79 1/1 mask_chk = 1'b1; Tests: T1 T2 T3  80 1/1 fulldata_chk = &tl_i.a_mask[3:0]; Tests: T1 T2 T3  81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 1/1 addr_sz_chk = 1'b0; Tests: T1 T2 T3  91 1/1 mask_chk = 1'b0; Tests: T1 T2 T3  92 1/1 fulldata_chk = 1'b0; Tests: T1 T2 T3  93 end 94 end 95 96 1/1 assign a_config_allowed = addr_sz_chk Tests: T1 T2 T3 

Cond Coverage for Instance : tb.dut.u_reg_core.u_reg_if.u_err
TotalCoveredPercent
Conditions3535100.00
Logical3535100.00
Non-Logical00
Event00

 LINE       26
 EXPRESSION (tl_i.a_opcode == PutFullData)
            ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       27
 EXPRESSION (tl_i.a_opcode == PutPartialData)
            ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       28
 EXPRESSION (tl_i.a_opcode == Get)
            -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       39
 EXPRESSION (( ~ (opcode_allowed & a_config_allowed) ) | instr_wr_err | instr_type_err)
             --------------------1--------------------   ------2-----   -------3------
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT112,T113,T81
010CoveredT112,T113,T81
100CoveredT2,T3,T13

 LINE       39
 SUB-EXPRESSION (opcode_allowed & a_config_allowed)
                 -------1------   --------2-------
-1--2-StatusTests
01CoveredT113,T81,T218
10CoveredT2,T3,T13
11CoveredT1,T2,T3

 LINE       42
 EXPRESSION ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData) | (tl_i.a_opcode == Get))
             ---------------1--------------   ----------------2----------------   -----------3----------
-1--2--3-StatusTests
000CoveredT112,T113,T81
001CoveredT1,T2,T3
010CoveredT1,T2,T3
100CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutFullData)
                ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutPartialData)
                ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == Get)
                -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       72
 EXPRESSION (tl_i.a_address[1] ? ((~|(tl_i.a_mask & 4'b0011))) : ((~|(tl_i.a_mask & 4'b1100))))
             --------1--------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T13,T14

 LINE       74
 EXPRESSION (tl_i.a_address[1] ? ((&tl_i.a_mask[3:2])) : ((&tl_i.a_mask[1:0])))
             --------1--------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T13,T14

 LINE       96
 EXPRESSION (addr_sz_chk & mask_chk & (op_get | op_partial | fulldata_chk))
             -----1-----   ----2---   ------------------3-----------------
-1--2--3-StatusTests
011CoveredT113,T81,T218
101CoveredT112,T113,T81
110CoveredT112,T113,T81
111CoveredT1,T2,T3

 LINE       96
 SUB-EXPRESSION (op_get | op_partial | fulldata_chk)
                 ---1--   -----2----   ------3-----
-1--2--3-StatusTests
000CoveredT2,T3,T13
001CoveredT1,T2,T3
010CoveredT2,T3,T13
100CoveredT1,T2,T3

Branch Coverage for Instance : tb.dut.u_reg_core.u_reg_if.u_err
Line No.TotalCoveredPercent
Branches 8 8 100.00
IF 61 8 8 100.00


61 if (tl_i.a_valid) begin -1- 62 unique case (tl_i.a_size) -2- 63 'h0: begin // 1 Byte 64 addr_sz_chk = 1'b1; ==> 65 mask_chk = ~|(tl_i.a_mask & ~mask); 66 fulldata_chk = |(tl_i.a_mask & mask); 67 end 68 69 'h1: begin // 2 Byte 70 addr_sz_chk = ~tl_i.a_address[0]; 71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) -3- ==> ==> 73 : ~|(tl_i.a_mask & 4'b1100); 74 fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; -4- ==> ==> 75 end 76 77 'h2: begin // 4 Byte 78 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; ==> 79 mask_chk = 1'b1; 80 fulldata_chk = &tl_i.a_mask[3:0]; 81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; ==> 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 addr_sz_chk = 1'b0; ==>

Branches:
-1--2--3--4-StatusTests
1 'h0 - - Covered T1,T2,T3
1 'h1 1 - Covered T1,T13,T14
1 'h1 0 - Covered T1,T2,T3
1 'h1 - 1 Covered T1,T13,T14
1 'h1 - 0 Covered T1,T2,T3
1 'h00000002 - - Covered T1,T2,T3
1 default - - Covered T112,T113,T81
0 - - - Covered T1,T2,T3


Assert Coverage for Instance : tb.dut.u_reg_core.u_reg_if.u_err
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 1 1 100.00 1 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 1 1 100.00 1 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
dataWidthOnly32_A 1257 1257 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1257 1257 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T7 1 1 0 0
T13 1 1 0 0
T14 1 1 0 0
T15 1 1 0 0
T18 1 1 0 0
T19 1 1 0 0
T20 1 1 0 0

Line Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.u_reg_top.u_reg_if.u_err
Line No.TotalCoveredPercent
TOTAL2626100.00
CONT_ASSIGN2611100.00
CONT_ASSIGN2711100.00
CONT_ASSIGN2811100.00
CONT_ASSIGN3211100.00
CONT_ASSIGN3611100.00
CONT_ASSIGN3911100.00
CONT_ASSIGN4211100.00
CONT_ASSIGN5411100.00
ALWAYS571717100.00
CONT_ASSIGN9611100.00

25 logic op_full, op_partial, op_get; 26 1/1 assign op_full = (tl_i.a_opcode == PutFullData); Tests: T3 T65 T41  27 1/1 assign op_partial = (tl_i.a_opcode == PutPartialData); Tests: T3 T65 T41  28 1/1 assign op_get = (tl_i.a_opcode == Get); Tests: T3 T65 T41  29 30 // An instruction type transaction cannot be write 31 logic instr_wr_err; 32 1/1 assign instr_wr_err = prim_mubi_pkg::mubi4_test_true_strict(tl_i.a_user.instr_type) & Tests: T3 T65 T52  33 (op_full | op_partial); 34 35 logic instr_type_err; 36 1/1 assign instr_type_err = prim_mubi_pkg::mubi4_test_invalid(tl_i.a_user.instr_type); Tests: T3 T52 T41  37 38 // Anything that doesn't fall into the permitted category, it raises an error 39 1/1 assign err_o = ~(opcode_allowed & a_config_allowed) | instr_wr_err | instr_type_err; Tests: T3 T65 T52  40 41 // opcode check 42 1/1 assign opcode_allowed = (tl_i.a_opcode == PutFullData) Tests: T3 T65 T41  43 | (tl_i.a_opcode == PutPartialData) 44 | (tl_i.a_opcode == Get); 45 46 // a channel configuration check 47 logic addr_sz_chk; // address and size alignment check 48 logic mask_chk; // inactive lane a_mask check 49 logic fulldata_chk; // PutFullData should have size match to mask 50 51 localparam bit [MW-1:0] MaskOne = 1; 52 logic [MW-1:0] mask; 53 54 1/1 assign mask = MaskOne << tl_i.a_address[SubAW-1:0]; Tests: T3 T13 T52  55 56 always_comb begin 57 1/1 addr_sz_chk = 1'b0; Tests: T3 T13 T65  58 1/1 mask_chk = 1'b0; Tests: T3 T13 T65  59 1/1 fulldata_chk = 1'b0; // Only valid when opcode is PutFullData Tests: T3 T13 T65  60 61 1/1 if (tl_i.a_valid) begin Tests: T3 T13 T65  62 1/1 unique case (tl_i.a_size) Tests: T112 T79 T113  63 'h0: begin // 1 Byte 64 1/1 addr_sz_chk = 1'b1; Tests: T112 T79 T113  65 1/1 mask_chk = ~|(tl_i.a_mask & ~mask); Tests: T112 T79 T113  66 1/1 fulldata_chk = |(tl_i.a_mask & mask); Tests: T112 T79 T113  67 end 68 69 'h1: begin // 2 Byte 70 1/1 addr_sz_chk = ~tl_i.a_address[0]; Tests: T112 T79 T113  71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 1/1 mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) Tests: T112 T79 T113  73 : ~|(tl_i.a_mask & 4'b1100); 74 1/1 fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; Tests: T112 T79 T113  75 end 76 77 'h2: begin // 4 Byte 78 1/1 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; Tests: T112 T79 T113  79 1/1 mask_chk = 1'b1; Tests: T112 T79 T113  80 1/1 fulldata_chk = &tl_i.a_mask[3:0]; Tests: T112 T79 T113  81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 1/1 addr_sz_chk = 1'b0; Tests: T3 T13 T65  91 1/1 mask_chk = 1'b0; Tests: T3 T13 T65  92 1/1 fulldata_chk = 1'b0; Tests: T3 T13 T65  93 end 94 end 95 96 1/1 assign a_config_allowed = addr_sz_chk Tests: T3 T65 T41 

Cond Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.u_reg_top.u_reg_if.u_err
TotalCoveredPercent
Conditions3535100.00
Logical3535100.00
Non-Logical00
Event00

 LINE       26
 EXPRESSION (tl_i.a_opcode == PutFullData)
            ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT13,T65,T52

 LINE       27
 EXPRESSION (tl_i.a_opcode == PutPartialData)
            ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T41,T73

 LINE       28
 EXPRESSION (tl_i.a_opcode == Get)
            -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T65,T42

 LINE       39
 EXPRESSION (( ~ (opcode_allowed & a_config_allowed) ) | instr_wr_err | instr_type_err)
             --------------------1--------------------   ------2-----   -------3------
-1--2--3-StatusTests
000CoveredT112,T79,T113
001CoveredT112,T113,T81
010CoveredT112,T113,T81
100CoveredT3,T65,T52

 LINE       39
 SUB-EXPRESSION (opcode_allowed & a_config_allowed)
                 -------1------   --------2-------
-1--2-StatusTests
01CoveredT112,T113,T218
10CoveredT3,T13,T65
11CoveredT112,T79,T113

 LINE       42
 EXPRESSION ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData) | (tl_i.a_opcode == Get))
             ---------------1--------------   ----------------2----------------   -----------3----------
-1--2--3-StatusTests
000CoveredT112,T113,T81
001CoveredT3,T65,T42
010CoveredT3,T41,T73
100CoveredT13,T65,T52

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutFullData)
                ---------------1--------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT13,T65,T52

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == PutPartialData)
                ----------------1----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T41,T73

 LINE       42
 SUB-EXPRESSION (tl_i.a_opcode == Get)
                -----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT3,T65,T42

 LINE       72
 EXPRESSION (tl_i.a_address[1] ? ((~|(tl_i.a_mask & 4'b0011))) : ((~|(tl_i.a_mask & 4'b1100))))
             --------1--------
-1-StatusTests
0CoveredT112,T79,T113
1CoveredT112,T79,T113

 LINE       74
 EXPRESSION (tl_i.a_address[1] ? ((&tl_i.a_mask[3:2])) : ((&tl_i.a_mask[1:0])))
             --------1--------
-1-StatusTests
0CoveredT112,T79,T113
1CoveredT112,T79,T113

 LINE       96
 EXPRESSION (addr_sz_chk & mask_chk & (op_get | op_partial | fulldata_chk))
             -----1-----   ----2---   ------------------3-----------------
-1--2--3-StatusTests
011CoveredT112,T113,T218
101CoveredT112,T113,T81
110CoveredT112,T113,T81
111CoveredT112,T79,T113

 LINE       96
 SUB-EXPRESSION (op_get | op_partial | fulldata_chk)
                 ---1--   -----2----   ------3-----
-1--2--3-StatusTests
000CoveredT13,T65,T52
001CoveredT112,T79,T113
010CoveredT3,T41,T73
100CoveredT3,T65,T42

Branch Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.u_reg_top.u_reg_if.u_err
Line No.TotalCoveredPercent
Branches 8 8 100.00
IF 61 8 8 100.00


61 if (tl_i.a_valid) begin -1- 62 unique case (tl_i.a_size) -2- 63 'h0: begin // 1 Byte 64 addr_sz_chk = 1'b1; ==> 65 mask_chk = ~|(tl_i.a_mask & ~mask); 66 fulldata_chk = |(tl_i.a_mask & mask); 67 end 68 69 'h1: begin // 2 Byte 70 addr_sz_chk = ~tl_i.a_address[0]; 71 // check inactive lanes if lower 2B, check a_mask[3:2], if uppwer 2B, a_mask[1:0] 72 mask_chk = (tl_i.a_address[1]) ? ~|(tl_i.a_mask & 4'b0011) -3- ==> ==> 73 : ~|(tl_i.a_mask & 4'b1100); 74 fulldata_chk = (tl_i.a_address[1]) ? &tl_i.a_mask[3:2] : &tl_i.a_mask[1:0] ; -4- ==> ==> 75 end 76 77 'h2: begin // 4 Byte 78 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; ==> 79 mask_chk = 1'b1; 80 fulldata_chk = &tl_i.a_mask[3:0]; 81 end 82 83 default: begin // else 84 addr_sz_chk = 1'b0; ==> 85 mask_chk = 1'b0; 86 fulldata_chk = 1'b0; 87 end 88 endcase 89 end else begin 90 addr_sz_chk = 1'b0; ==>

Branches:
-1--2--3--4-StatusTests
1 'h0 - - Covered T112,T79,T113
1 'h1 1 - Covered T112,T79,T113
1 'h1 0 - Covered T112,T79,T113
1 'h1 - 1 Covered T112,T79,T113
1 'h1 - 0 Covered T112,T79,T113
1 'h00000002 - - Covered T112,T79,T113
1 default - - Covered T112,T113,T81
0 - - - Covered T3,T13,T65


Assert Coverage for Instance : tb.dut.u_eflash.u_flash.gen_generic.u_impl_generic.u_reg_top.u_reg_if.u_err
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 1 1 100.00 1 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 1 1 100.00 1 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
dataWidthOnly32_A 1257 1257 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1257 1257 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T7 1 1 0 0
T13 1 1 0 0
T14 1 1 0 0
T15 1 1 0 0
T18 1 1 0 0
T19 1 1 0 0
T20 1 1 0 0

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