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
74.35 88.46 71.43 37.50 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
74.35 88.46 71.43 37.50 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
94.26 100.00 80.47 96.55 100.00 u_tl_adapter_eflash


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
no children



Module Instance : tb.dut.u_to_prog_fifo.u_err

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
87.32 100.00 74.29 75.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
87.32 100.00 74.29 75.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
001CoveredT2,T10,T52
010CoveredT114,T73,T117
100CoveredT1,T2,T3

 LINE       39
 SUB-EXPRESSION (opcode_allowed & a_config_allowed)
                 -------1------   --------2-------
-1--2-StatusTests
01CoveredT114,T73,T117
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
000CoveredT114,T73,T117
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
1CoveredT2,T20,T21

 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
1CoveredT2,T20,T21

 LINE       96
 EXPRESSION (addr_sz_chk & mask_chk & (op_get | op_partial | fulldata_chk))
             -----1-----   ----2---   ------------------3-----------------
-1--2--3-StatusTests
011CoveredT24,T114,T73
101CoveredT114,T73,T117
110CoveredT114,T73,T117
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 T2,T20,T21
1 'h1 0 - Covered T1,T2,T3
1 'h1 - 1 Covered T2,T20,T21
1 'h1 - 0 Covered T1,T2,T3
1 'h00000002 - - Covered T1,T2,T3
1 default - - Covered T12,T114,T73
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 5630 5630 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 5630 5630 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
T20 5 5 0 0
T21 5 5 0 0
T22 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 T7  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 T7  79 1/1 mask_chk = 1'b1; Tests: T2 T3 T7  80 1/1 fulldata_chk = &tl_i.a_mask[3:0]; Tests: T2 T3 T7  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,T7
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,T7

 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,T7

 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,T7
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 1040 1040 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1040 1040 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
T20 1 1 0 0
T21 1 1 0 0
T22 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: T2 T13 T16  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: T2 T13 T16  79 1/1 mask_chk = 1'b1; Tests: T2 T13 T16  80 1/1 fulldata_chk = &tl_i.a_mask[3:0]; Tests: T2 T13 T16  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
Conditions352571.43
Logical352571.43
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
1CoveredT15,T57,T25

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

 LINE       39
 EXPRESSION (( ~ (opcode_allowed & a_config_allowed) ) | instr_wr_err | instr_type_err)
             --------------------1--------------------   ------2-----   -------3------
-1--2--3-StatusTests
000CoveredT2,T13,T16
001CoveredT2,T10,T52
010Not Covered
100CoveredT3,T20,T57

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

 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
001CoveredT2,T3,T13
010CoveredT15,T57,T25
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
1CoveredT15,T57,T25

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

 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
011CoveredT24
101Not Covered
110Not Covered
111CoveredT2,T13,T16

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

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 T2,T13,T16
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 1040 1040 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1040 1040 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
T20 1 1 0 0
T21 1 1 0 0
T22 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: T1 T7 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: T1 T7 T14  79 1/1 mask_chk = 1'b1; Tests: T1 T7 T14  80 1/1 fulldata_chk = &tl_i.a_mask[3:0]; Tests: T1 T7 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
Conditions352674.29
Logical352674.29
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,T7,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
11CoveredT1,T7,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
0CoveredT12
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
0CoveredT12
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,T7,T14

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

Branch Coverage for Instance : tb.dut.u_to_prog_fifo.u_err
Line No.TotalCoveredPercent
Branches 8 6 75.00
IF 61 8 6 75.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 - Covered T12
1 'h1 - 1 Not Covered
1 'h1 - 0 Covered T12
1 'h00000002 - - Covered T1,T7,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 1040 1040 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1040 1040 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
T20 1 1 0 0
T21 1 1 0 0
T22 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
001CoveredT73,T117,T115
010CoveredT73,T117,T115
100CoveredT1,T2,T3

 LINE       39
 SUB-EXPRESSION (opcode_allowed & a_config_allowed)
                 -------1------   --------2-------
-1--2-StatusTests
01CoveredT114,T117,T225
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
000CoveredT114,T73,T117
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
1CoveredT2,T20,T21

 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
1CoveredT2,T20,T21

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

 LINE       96
 SUB-EXPRESSION (op_get | op_partial | fulldata_chk)
                 ---1--   -----2----   ------3-----
-1--2--3-StatusTests
000CoveredT1,T7,T14
001CoveredT1,T2,T3
010CoveredT1,T2,T3
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 T2,T20,T21
1 'h1 0 - Covered T1,T2,T3
1 'h1 - 1 Covered T2,T20,T21
1 'h1 - 0 Covered T1,T2,T3
1 'h00000002 - - Covered T1,T2,T3
1 default - - Covered T114,T73,T117
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 1255 1255 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1255 1255 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
T20 1 1 0 0
T21 1 1 0 0
T22 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: T13 T22 T17  27 1/1 assign op_partial = (tl_i.a_opcode == PutPartialData); Tests: T13 T22 T17  28 1/1 assign op_get = (tl_i.a_opcode == Get); Tests: T13 T22 T17  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: T7 T13 T22  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: T7 T22 T16  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: T13 T17 T25  40 41 // opcode check 42 1/1 assign opcode_allowed = (tl_i.a_opcode == PutFullData) Tests: T13 T22 T17  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: T7 T13 T22  55 56 always_comb begin 57 1/1 addr_sz_chk = 1'b0; Tests: T7 T13 T22  58 1/1 mask_chk = 1'b0; Tests: T7 T13 T22  59 1/1 fulldata_chk = 1'b0; // Only valid when opcode is PutFullData Tests: T7 T13 T22  60 61 1/1 if (tl_i.a_valid) begin Tests: T7 T13 T22  62 1/1 unique case (tl_i.a_size) Tests: T72 T114 T73  63 'h0: begin // 1 Byte 64 1/1 addr_sz_chk = 1'b1; Tests: T72 T114 T73  65 1/1 mask_chk = ~|(tl_i.a_mask & ~mask); Tests: T72 T114 T73  66 1/1 fulldata_chk = |(tl_i.a_mask & mask); Tests: T72 T114 T73  67 end 68 69 'h1: begin // 2 Byte 70 1/1 addr_sz_chk = ~tl_i.a_address[0]; Tests: T72 T114 T73  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: T72 T114 T73  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: T72 T114 T73  75 end 76 77 'h2: begin // 4 Byte 78 1/1 addr_sz_chk = ~|tl_i.a_address[SubAW-1:0]; Tests: T72 T114 T73  79 1/1 mask_chk = 1'b1; Tests: T72 T114 T73  80 1/1 fulldata_chk = &tl_i.a_mask[3:0]; Tests: T72 T114 T73  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: T7 T13 T22  91 1/1 mask_chk = 1'b0; Tests: T7 T13 T22  92 1/1 fulldata_chk = 1'b0; Tests: T7 T13 T22  93 end 94 end 95 96 1/1 assign a_config_allowed = addr_sz_chk Tests: T13 T22 T17 

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,T17,T112

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

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

 LINE       39
 EXPRESSION (( ~ (opcode_allowed & a_config_allowed) ) | instr_wr_err | instr_type_err)
             --------------------1--------------------   ------2-----   -------3------
-1--2--3-StatusTests
000CoveredT72,T114,T73
001CoveredT114,T73,T117
010CoveredT114,T73,T117
100CoveredT7,T13,T22

 LINE       39
 SUB-EXPRESSION (opcode_allowed & a_config_allowed)
                 -------1------   --------2-------
-1--2-StatusTests
01CoveredT114,T73,T117
10CoveredT7,T13,T22
11CoveredT72,T114,T73

 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
000CoveredT114,T73,T117
001CoveredT7,T13,T22
010CoveredT22,T25,T26
100CoveredT13,T17,T112

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

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

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

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

 LINE       74
 EXPRESSION (tl_i.a_address[1] ? ((&tl_i.a_mask[3:2])) : ((&tl_i.a_mask[1:0])))
             --------1--------
-1-StatusTests
0CoveredT72,T114,T73
1CoveredT72,T114,T73

 LINE       96
 EXPRESSION (addr_sz_chk & mask_chk & (op_get | op_partial | fulldata_chk))
             -----1-----   ----2---   ------------------3-----------------
-1--2--3-StatusTests
011CoveredT114,T73,T117
101CoveredT114,T73,T117
110CoveredT114,T73,T117
111CoveredT72,T114,T73

 LINE       96
 SUB-EXPRESSION (op_get | op_partial | fulldata_chk)
                 ---1--   -----2----   ------3-----
-1--2--3-StatusTests
000CoveredT13,T17,T112
001CoveredT72,T114,T73
010CoveredT22,T25,T26
100CoveredT7,T13,T22

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 T72,T114,T73
1 'h1 1 - Covered T72,T114,T73
1 'h1 0 - Covered T72,T114,T73
1 'h1 - 1 Covered T72,T114,T73
1 'h1 - 0 Covered T72,T114,T73
1 'h00000002 - - Covered T72,T114,T73
1 default - - Covered T114,T73,T117
0 - - - Covered T7,T13,T22


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 1255 1255 0 0


dataWidthOnly32_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1255 1255 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
T20 1 1 0 0
T21 1 1 0 0
T22 1 1 0 0

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