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



Module Instance : tb.dut.u_tap_tlul_host

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
96.78 95.45 91.67 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
81.19 98.00 92.86 15.09 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
93.47 100.00 83.10 99.89 100.00 84.38 dut


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
u_cmd_intg_gen 100.00 100.00 100.00
u_rsp_chk 78.77 100.00 100.00 15.09 100.00

Line Coverage for Module : tlul_adapter_host
Line No.TotalCoveredPercent
TOTAL232191.30
ALWAYS7033100.00
ALWAYS7855100.00
CONT_ASSIGN8911100.00
CONT_ASSIGN9411100.00
CONT_ASSIGN9611100.00
CONT_ASSIGN11611100.00
CONT_ASSIGN11811100.00
CONT_ASSIGN11911100.00
CONT_ASSIGN12011100.00
ALWAYS1324375.00
CONT_ASSIGN14111100.00
CONT_ASSIGN14511100.00
CONT_ASSIGN149100.00
CONT_ASSIGN15311100.00
ALWAYS16800
ALWAYS17800

69 always_ff @(posedge clk_i or negedge rst_ni) begin 70 1/1 if (!rst_ni) begin Tests: T1 T2 T3  71 1/1 source_q <= '0; Tests: T1 T2 T3  72 end else begin 73 1/1 source_q <= source_d; Tests: T1 T2 T3  74 end 75 end 76 77 always_comb begin 78 1/1 source_d = source_q; Tests: T1 T2 T3  79 80 1/1 if (req_i && gnt_o) begin Tests: T1 T2 T3  81 1/1 if (source_q == MaxSource[ReqNumW-1:0]) begin Tests: T1 T2 T3  82 1/1 source_d = '0; Tests: T5 T6 T7  83 end else begin 84 1/1 source_d = source_q + ReqNumOne; Tests: T1 T2 T3  85 end 86 end MISSING_ELSE 87 end 88 89 1/1 assign tl_source = top_pkg::TL_AIW'(source_q); Tests: T1 T2 T3  90 end 91 92 // For TL-UL Get opcode all active bytes must have their mask bit set, so all reads get all tl_be 93 // bits set. For writes the supplied be_i is used as the mask. 94 1/1 assign tl_be = ~we_i ? {top_pkg::TL_DBW{1'b1}} : be_i; Tests: T5 T6 T7  95 96 1/1 assign tl_out = '{ Tests: T1 T2 T3  97 a_valid: req_i, 98 a_opcode: (~we_i) ? Get : 99 (&be_i) ? PutFullData : 100 PutPartialData, 101 a_param: 3'h0, 102 a_size: top_pkg::TL_SZW'(WordSize), 103 a_mask: tl_be, 104 a_source: tl_source, 105 a_address: {addr_i[31:WordSize], {WordSize{1'b0}}}, 106 a_data: wdata_i, 107 a_user: '{default: '0, data_intg: wdata_intg_i, instr_type: instr_type_i}, 108 d_ready: 1'b1 109 }; 110 111 tlul_cmd_intg_gen #(.EnableDataIntgGen (EnableDataIntgGen)) u_cmd_intg_gen ( 112 .tl_i(tl_out), 113 .tl_o(tl_o) 114 ); 115 116 1/1 assign gnt_o = tl_i.a_ready; Tests: T1 T2 T3  117 118 1/1 assign valid_o = tl_i.d_valid; Tests: T1 T2 T3  119 1/1 assign rdata_o = tl_i.d_data; Tests: T1 T2 T3  120 1/1 assign rdata_intg_o = tl_i.d_user.data_intg; Tests: T1 T2 T3  121 122 logic intg_err; 123 tlul_rsp_intg_chk #( 124 .EnableRspDataIntgCheck(EnableRspDataIntgCheck) 125 ) u_rsp_chk ( 126 .tl_i, 127 .err_o(intg_err) 128 ); 129 130 logic intg_err_q; 131 always_ff @(posedge clk_i or negedge rst_ni) begin 132 1/1 if (!rst_ni) begin Tests: T1 T2 T3  133 1/1 intg_err_q <= '0; Tests: T1 T2 T3  134 1/1 end else if (intg_err) begin Tests: T1 T2 T3  135 0/1 ==> intg_err_q <= 1'b1; 136 end MISSING_ELSE 137 end 138 139 // err_o is transactional. This allows the host to continue 140 // debug without receiving an endless stream of errors. 141 1/1 assign err_o = tl_i.d_error | intg_err; Tests: T1 T2 T3  142 143 // intg_err_o is permanent once detected, and should be used 144 // to trigger alerts 145 1/1 assign intg_err_o = intg_err_q | intg_err; Tests: T1 T2 T3  146 147 // Addresses are assumed to be word-aligned, and the bottom bits are ignored 148 logic unused_addr_bottom_bits; 149 0/1 ==> assign unused_addr_bottom_bits = ^addr_i[WordSize-1:0]; 150 151 // Explicitly ignore unused fields of tl_i 152 logic unused_tl_i_fields; 153 1/1 assign unused_tl_i_fields = ^{tl_i.d_opcode, tl_i.d_param, Tests: T1 T2 T3  154 tl_i.d_size, tl_i.d_source, tl_i.d_sink, 155 tl_i.d_user}; 156 157 `ifdef INC_ASSERT 158 //VCS coverage off 159 // pragma coverage off 160 localparam int OutstandingReqCntW = 161 (MAX_REQS == 2 ** $clog2(MAX_REQS)) ? $clog2(MAX_REQS) + 1 : $clog2(MAX_REQS); 162 localparam logic [OutstandingReqCntW-1:0] OutstandingReqCntOne = OutstandingReqCntW'(1'b1); 163 164 logic [OutstandingReqCntW-1:0] outstanding_reqs_q; 165 logic [OutstandingReqCntW-1:0] outstanding_reqs_d; 166 167 always_comb begin 168 unreachable outstanding_reqs_d = outstanding_reqs_q; 169 170 unreachable if ((req_i && gnt_o) && !valid_o) begin 171 unreachable outstanding_reqs_d = outstanding_reqs_q + OutstandingReqCntOne; 172 unreachable end else if (!(req_i && gnt_o) && valid_o) begin 173 unreachable outstanding_reqs_d = outstanding_reqs_q - OutstandingReqCntOne; 174 end ==> MISSING_ELSE 175 end 176 177 always_ff @(posedge clk_i or negedge rst_ni) begin 178 unreachable if (!rst_ni) begin 179 unreachable outstanding_reqs_q <= '0; 180 end else begin 181 unreachable outstanding_reqs_q <= outstanding_reqs_d;

Cond Coverage for Module : tlul_adapter_host
TotalCoveredPercent
Conditions161168.75
Logical161168.75
Non-Logical00
Event00

 LINE       80
 EXPRESSION (req_i && gnt_o)
             --1--    --2--
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT5,T6,T7

 LINE       81
 EXPRESSION (g_multiple_reqs.source_q == g_multiple_reqs.MaxSource[0])
            -----------------------------1----------------------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT5,T6,T7

 LINE       94
 EXPRESSION (((~we_i)) ? ({top_pkg::TL_DBW {1'b1}}) : be_i)
             ----1----
-1-StatusTests
0CoveredT5,T6,T7
1CoveredT5,T6,T7

 LINE       96
 EXPRESSION (((~we_i)) ? Get : (((&be_i)) ? PutFullData : PutPartialData))
             ----1----
-1-StatusTests
0CoveredT5,T6,T7
1CoveredT5,T6,T7

 LINE       96
 SUB-EXPRESSION (((&be_i)) ? PutFullData : PutPartialData)
                 ----1----
-1-StatusTests
0Unreachable
1CoveredT5,T6,T7

 LINE       141
 EXPRESSION (tl_i.d_error | intg_err)
             ------1-----   ----2---
-1--2-StatusTests
00CoveredT1,T2,T3
01Not Covered
10Not Covered

 LINE       145
 EXPRESSION (intg_err_q | intg_err)
             -----1----   ----2---
-1--2-StatusTests
00CoveredT1,T2,T3
01Not Covered
10Not Covered

Branch Coverage for Module : tlul_adapter_host
Line No.TotalCoveredPercent
Branches 10 9 90.00
TERNARY 94 2 2 100.00
IF 132 3 2 66.67
IF 70 2 2 100.00
IF 80 3 3 100.00


94 assign tl_be = ~we_i ? {top_pkg::TL_DBW{1'b1}} : be_i; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T5,T6,T7
0 Covered T5,T6,T7


132 if (!rst_ni) begin -1- 133 intg_err_q <= '0; ==> 134 end else if (intg_err) begin -2- 135 intg_err_q <= 1'b1; ==> 136 end MISSING_ELSE ==>

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


70 if (!rst_ni) begin -1- 71 source_q <= '0; ==> 72 end else begin 73 source_q <= source_d; ==>

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


80 if (req_i && gnt_o) begin -1- 81 if (source_q == MaxSource[ReqNumW-1:0]) begin -2- 82 source_d = '0; ==> 83 end else begin 84 source_d = source_q + ReqNumOne; ==> 85 end 86 end MISSING_ELSE ==>

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


Assert Coverage for Module : tlul_adapter_host
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
DontExceeedMaxReqs 63542925 220196 0 0


DontExceeedMaxReqs
NameAttemptsReal SuccessesFailuresIncomplete
Total 63542925 220196 0 0
T5 21036 160 0 0
T6 37356 310 0 0
T7 50471 297 0 0
T8 0 84 0 0
T9 0 64 0 0
T11 72857 410 0 0
T15 21716 0 0 0
T16 36103 0 0 0
T17 102312 406 0 0
T18 0 204 0 0
T19 0 1437 0 0
T20 0 1062 0 0
T21 2077 0 0 0
T22 3166 0 0 0
T23 55082 0 0 0

Line Coverage for Instance : tb.dut.u_tap_tlul_host
Line No.TotalCoveredPercent
TOTAL222195.45
ALWAYS7033100.00
ALWAYS7855100.00
CONT_ASSIGN8911100.00
CONT_ASSIGN9411100.00
CONT_ASSIGN9611100.00
CONT_ASSIGN11611100.00
CONT_ASSIGN11811100.00
CONT_ASSIGN11911100.00
CONT_ASSIGN12011100.00
ALWAYS13233100.00
CONT_ASSIGN14111100.00
CONT_ASSIGN14511100.00
CONT_ASSIGN149100.00
CONT_ASSIGN15311100.00
ALWAYS16800
ALWAYS17800

69 always_ff @(posedge clk_i or negedge rst_ni) begin 70 1/1 if (!rst_ni) begin Tests: T1 T2 T3  71 1/1 source_q <= '0; Tests: T1 T2 T3  72 end else begin 73 1/1 source_q <= source_d; Tests: T1 T2 T3  74 end 75 end 76 77 always_comb begin 78 1/1 source_d = source_q; Tests: T1 T2 T3  79 80 1/1 if (req_i && gnt_o) begin Tests: T1 T2 T3  81 1/1 if (source_q == MaxSource[ReqNumW-1:0]) begin Tests: T1 T2 T3  82 1/1 source_d = '0; Tests: T5 T6 T7  83 end else begin 84 1/1 source_d = source_q + ReqNumOne; Tests: T1 T2 T3  85 end 86 end MISSING_ELSE 87 end 88 89 1/1 assign tl_source = top_pkg::TL_AIW'(source_q); Tests: T1 T2 T3  90 end 91 92 // For TL-UL Get opcode all active bytes must have their mask bit set, so all reads get all tl_be 93 // bits set. For writes the supplied be_i is used as the mask. 94 1/1 assign tl_be = ~we_i ? {top_pkg::TL_DBW{1'b1}} : be_i; Tests: T5 T6 T7  95 96 1/1 assign tl_out = '{ Tests: T1 T2 T3  97 a_valid: req_i, 98 a_opcode: (~we_i) ? Get : 99 (&be_i) ? PutFullData : 100 PutPartialData, 101 a_param: 3'h0, 102 a_size: top_pkg::TL_SZW'(WordSize), 103 a_mask: tl_be, 104 a_source: tl_source, 105 a_address: {addr_i[31:WordSize], {WordSize{1'b0}}}, 106 a_data: wdata_i, 107 a_user: '{default: '0, data_intg: wdata_intg_i, instr_type: instr_type_i}, 108 d_ready: 1'b1 109 }; 110 111 tlul_cmd_intg_gen #(.EnableDataIntgGen (EnableDataIntgGen)) u_cmd_intg_gen ( 112 .tl_i(tl_out), 113 .tl_o(tl_o) 114 ); 115 116 1/1 assign gnt_o = tl_i.a_ready; Tests: T1 T2 T3  117 118 1/1 assign valid_o = tl_i.d_valid; Tests: T1 T2 T3  119 1/1 assign rdata_o = tl_i.d_data; Tests: T1 T2 T3  120 1/1 assign rdata_intg_o = tl_i.d_user.data_intg; Tests: T1 T2 T3  121 122 logic intg_err; 123 tlul_rsp_intg_chk #( 124 .EnableRspDataIntgCheck(EnableRspDataIntgCheck) 125 ) u_rsp_chk ( 126 .tl_i, 127 .err_o(intg_err) 128 ); 129 130 logic intg_err_q; 131 always_ff @(posedge clk_i or negedge rst_ni) begin 132 1/1 if (!rst_ni) begin Tests: T1 T2 T3  133 1/1 intg_err_q <= '0; Tests: T1 T2 T3  134 1/1 end else if (intg_err) begin Tests: T1 T2 T3  135 excluded intg_err_q <= 1'b1; Exclude Annotation: VC_COV_UNR 136 end MISSING_ELSE 137 end 138 139 // err_o is transactional. This allows the host to continue 140 // debug without receiving an endless stream of errors. 141 1/1 assign err_o = tl_i.d_error | intg_err; Tests: T1 T2 T3  142 143 // intg_err_o is permanent once detected, and should be used 144 // to trigger alerts 145 1/1 assign intg_err_o = intg_err_q | intg_err; Tests: T1 T2 T3  146 147 // Addresses are assumed to be word-aligned, and the bottom bits are ignored 148 logic unused_addr_bottom_bits; 149 0/1 ==> assign unused_addr_bottom_bits = ^addr_i[WordSize-1:0]; 150 151 // Explicitly ignore unused fields of tl_i 152 logic unused_tl_i_fields; 153 1/1 assign unused_tl_i_fields = ^{tl_i.d_opcode, tl_i.d_param, Tests: T1 T2 T3  154 tl_i.d_size, tl_i.d_source, tl_i.d_sink, 155 tl_i.d_user}; 156 157 `ifdef INC_ASSERT 158 //VCS coverage off 159 // pragma coverage off 160 localparam int OutstandingReqCntW = 161 (MAX_REQS == 2 ** $clog2(MAX_REQS)) ? $clog2(MAX_REQS) + 1 : $clog2(MAX_REQS); 162 localparam logic [OutstandingReqCntW-1:0] OutstandingReqCntOne = OutstandingReqCntW'(1'b1); 163 164 logic [OutstandingReqCntW-1:0] outstanding_reqs_q; 165 logic [OutstandingReqCntW-1:0] outstanding_reqs_d; 166 167 always_comb begin 168 unreachable outstanding_reqs_d = outstanding_reqs_q; 169 170 unreachable if ((req_i && gnt_o) && !valid_o) begin 171 unreachable outstanding_reqs_d = outstanding_reqs_q + OutstandingReqCntOne; 172 unreachable end else if (!(req_i && gnt_o) && valid_o) begin 173 unreachable outstanding_reqs_d = outstanding_reqs_q - OutstandingReqCntOne; 174 end ==> MISSING_ELSE 175 end 176 177 always_ff @(posedge clk_i or negedge rst_ni) begin 178 unreachable if (!rst_ni) begin 179 unreachable outstanding_reqs_q <= '0; 180 end else begin 181 unreachable outstanding_reqs_q <= outstanding_reqs_d;

Cond Coverage for Instance : tb.dut.u_tap_tlul_host
TotalCoveredPercent
Conditions121191.67
Logical121191.67
Non-Logical00
Event00

 LINE       80
 EXPRESSION (req_i && gnt_o)
             --1--    --2--
-1--2-StatusTestsExclude Annotation
01CoveredT1,T2,T3
10Excluded VC_COV_UNR
11CoveredT5,T6,T7

 LINE       81
 EXPRESSION (g_multiple_reqs.source_q == g_multiple_reqs.MaxSource[0])
            -----------------------------1----------------------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT5,T6,T7

 LINE       94
 EXPRESSION (((~we_i)) ? ({top_pkg::TL_DBW {1'b1}}) : be_i)
             ----1----
-1-StatusTests
0CoveredT5,T6,T7
1CoveredT5,T6,T7

 LINE       96
 EXPRESSION (((~we_i)) ? Get : (((&be_i)) ? PutFullData : PutPartialData))
             ----1----
-1-StatusTests
0CoveredT5,T6,T7
1CoveredT5,T6,T7

 LINE       96
 SUB-EXPRESSION (((&be_i)) ? PutFullData : PutPartialData)
                 ----1----
-1-StatusTests
0Unreachable
1CoveredT5,T6,T7

 LINE       141
 EXPRESSION (tl_i.d_error | intg_err)
             ------1-----   ----2---
-1--2-StatusTestsExclude Annotation
00CoveredT1,T2,T3
01Excluded VC_COV_UNR
10Not Covered

 LINE       145
 EXPRESSION (intg_err_q | intg_err)
             -----1----   ----2---
-1--2-StatusTestsExclude Annotation
00CoveredT1,T2,T3
01Excluded VC_COV_UNR
10Excluded VC_COV_UNR

Branch Coverage for Instance : tb.dut.u_tap_tlul_host
Line No.TotalCoveredPercent
Branches 9 9 100.00
TERNARY 94 2 2 100.00
IF 132 2 2 100.00
IF 70 2 2 100.00
IF 80 3 3 100.00


94 assign tl_be = ~we_i ? {top_pkg::TL_DBW{1'b1}} : be_i; -1- ==> ==>

Branches:
-1-StatusTests
1 Covered T5,T6,T7
0 Covered T5,T6,T7


132 if (!rst_ni) begin -1- 133 intg_err_q <= '0; ==> 134 end else if (intg_err) begin -2- 135 intg_err_q <= 1'b1; ==> (Excluded) Exclude Annotation: VC_COV_UNR 136 end MISSING_ELSE ==>

Branches:
-1--2-StatusTestsExclude Annotation
1 - Covered T1,T2,T3
0 1 Excluded VC_COV_UNR
0 0 Covered T1,T2,T3


70 if (!rst_ni) begin -1- 71 source_q <= '0; ==> 72 end else begin 73 source_q <= source_d; ==>

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


80 if (req_i && gnt_o) begin -1- 81 if (source_q == MaxSource[ReqNumW-1:0]) begin -2- 82 source_d = '0; ==> 83 end else begin 84 source_d = source_q + ReqNumOne; ==> 85 end 86 end MISSING_ELSE ==>

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


Assert Coverage for Instance : tb.dut.u_tap_tlul_host
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
DontExceeedMaxReqs 63542925 220196 0 0


DontExceeedMaxReqs
NameAttemptsReal SuccessesFailuresIncomplete
Total 63542925 220196 0 0
T5 21036 160 0 0
T6 37356 310 0 0
T7 50471 297 0 0
T8 0 84 0 0
T9 0 64 0 0
T11 72857 410 0 0
T15 21716 0 0 0
T16 36103 0 0 0
T17 102312 406 0 0
T18 0 204 0 0
T19 0 1437 0 0
T20 0 1062 0 0
T21 2077 0 0 0
T22 3166 0 0 0
T23 55082 0 0 0

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