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



Module Instance : tb.dut.u_reg.u_reg_if

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.48 100.00 97.92 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
98.98 97.14 98.80 100.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
100.00 100.00 100.00 100.00 100.00 u_reg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
u_err 100.00 100.00 100.00 100.00 100.00
u_rsp_intg_gen 83.33 66.67 100.00

Line Coverage for Module : tlul_adapter_reg
Line No.TotalCoveredPercent
TOTAL3838100.00
CONT_ASSIGN7711100.00
CONT_ASSIGN7811100.00
CONT_ASSIGN8011100.00
CONT_ASSIGN8111100.00
CONT_ASSIGN8311100.00
CONT_ASSIGN8411100.00
CONT_ASSIGN8511100.00
CONT_ASSIGN8611100.00
CONT_ASSIGN9111100.00
ALWAYS9566100.00
ALWAYS10188100.00
ALWAYS14166100.00
CONT_ASSIGN14911100.00
CONT_ASSIGN15011100.00
CONT_ASSIGN15411100.00
CONT_ASSIGN20411100.00
CONT_ASSIGN20811100.00
CONT_ASSIGN21111100.00
ALWAYS21833100.00

76 77 1/1 assign a_ack = tl_i.a_valid & tl_o.a_ready; Tests: T4 T5 T1  78 1/1 assign d_ack = tl_o.d_valid & tl_i.d_ready; Tests: T4 T5 T1  79 // Request signal 80 1/1 assign wr_req = a_ack & ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData)); Tests: T4 T5 T1  81 1/1 assign rd_req = a_ack & (tl_i.a_opcode == Get); Tests: T4 T5 T1  82 83 1/1 assign we_o = wr_req & ~err_internal; Tests: T4 T5 T1  84 1/1 assign re_o = rd_req & ~err_internal; Tests: T4 T5 T1  85 1/1 assign wdata_o = tl_i.a_data; Tests: T4 T5 T1  86 1/1 assign be_o = tl_i.a_mask; Tests: T4 T5 T1  87 88 if (RegAw <= 2) begin : gen_only_one_reg 89 assign addr_o = '0; 90 end else begin : gen_more_regs 91 1/1 assign addr_o = {tl_i.a_address[RegAw-1:2], 2'b00}; // generate always word-align Tests: T4 T5 T1  92 end 93 94 always_ff @(posedge clk_i or negedge rst_ni) begin 95 2/2 if (!rst_ni) outstanding_q <= 1'b0; Tests: T4 T5 T1  | T4 T5 T1  96 2/2 else if (a_ack) outstanding_q <= 1'b1; Tests: T4 T5 T1  | T4 T5 T1  97 2/2 else if (d_ack) outstanding_q <= 1'b0; Tests: T4 T5 T1  | T4 T5 T1  MISSING_ELSE 98 end 99 100 always_ff @(posedge clk_i or negedge rst_ni) begin 101 1/1 if (!rst_ni) begin Tests: T4 T5 T1  102 1/1 reqid_q <= '0; Tests: T4 T5 T1  103 1/1 reqsz_q <= '0; Tests: T4 T5 T1  104 1/1 rspop_q <= AccessAck; Tests: T4 T5 T1  105 1/1 end else if (a_ack) begin Tests: T4 T5 T1  106 1/1 reqid_q <= tl_i.a_source; Tests: T4 T5 T1  107 1/1 reqsz_q <= tl_i.a_size; Tests: T4 T5 T1  108 // Return AccessAckData regardless of error 109 1/1 rspop_q <= (rd_req) ? AccessAckData : AccessAck ; Tests: T4 T5 T1  110 end MISSING_ELSE 111 end 112 113 if (AccessLatency == 1) begin : gen_access_latency1 114 logic wr_req_q, rd_req_q; 115 always_ff @(posedge clk_i or negedge rst_ni) begin 116 if (!rst_ni) begin 117 rdata_q <= '0; 118 error_q <= 1'b0; 119 wr_req_q <= 1'b0; 120 rd_req_q <= 1'b0; 121 end else begin 122 rd_req_q <= rd_req; 123 wr_req_q <= wr_req; 124 // Addressing phase 125 if (a_ack) begin 126 error_q <= err_internal; 127 // Response phase 128 end else begin 129 error_q <= error; 130 rdata_q <= rdata; 131 end 132 end 133 end 134 assign rdata = (error_i || error_q || wr_req_q) ? '1 : 135 (rd_req_q) ? rdata_i : 136 rdata_q; // backpressure case 137 assign error = (rd_req_q || wr_req_q) ? (error_q || error_i) : 138 error_q; // backpressure case 139 end else begin : gen_access_latency0 140 always_ff @(posedge clk_i or negedge rst_ni) begin 141 1/1 if (!rst_ni) begin Tests: T4 T5 T1  142 1/1 rdata_q <= '0; Tests: T4 T5 T1  143 1/1 error_q <= 1'b0; Tests: T4 T5 T1  144 1/1 end else if (a_ack) begin Tests: T4 T5 T1  145 1/1 rdata_q <= (error_i || err_internal || wr_req) ? '1 : rdata_i; Tests: T4 T5 T1  146 1/1 error_q <= error_i || err_internal; Tests: T4 T5 T1  147 end MISSING_ELSE 148 end 149 1/1 assign rdata = rdata_q; Tests: T4 T5 T1  150 1/1 assign error = error_q; Tests: T4 T5 T1  151 end 152 153 tlul_pkg::tl_d2h_t tl_o_pre; 154 1/1 assign tl_o_pre = '{ Tests: T4 T5 T1  155 // busy is selected based on address 156 // thus if there is no valid transaction, we should ignore busy 157 a_ready: ~(outstanding_q | tl_i.a_valid & busy_i), 158 d_valid: outstanding_q, 159 d_opcode: rspop_q, 160 d_param: '0, 161 d_size: reqsz_q, 162 d_source: reqid_q, 163 d_sink: '0, 164 d_data: rdata, 165 d_user: '0, 166 d_error: error 167 }; 168 169 // outgoing integrity generation 170 tlul_rsp_intg_gen #( 171 .EnableRspIntgGen(EnableRspIntgGen), 172 .EnableDataIntgGen(EnableDataIntgGen) 173 ) u_rsp_intg_gen ( 174 .tl_i(tl_o_pre), 175 .tl_o(tl_o) 176 ); 177 178 if (CmdIntgCheck) begin : gen_cmd_intg_check 179 logic intg_error_q; 180 tlul_cmd_intg_chk u_cmd_intg_chk ( 181 .tl_i(tl_i), 182 .err_o(intg_error) 183 ); 184 // permanently latch integrity error until reset 185 always_ff @(posedge clk_i or negedge rst_ni) begin 186 if (!rst_ni) begin 187 intg_error_q <= 1'b0; 188 end else if (intg_error) begin 189 intg_error_q <= 1'b1; 190 end 191 end 192 assign intg_error_o = intg_error_q; 193 end else begin : gen_no_cmd_intg_check 194 assign intg_error = 1'b0; 195 assign intg_error_o = 1'b0; 196 end 197 198 //////////////////// 199 // Error Handling // 200 //////////////////// 201 202 // An instruction type transaction is only valid if en_ifetch is enabled 203 // If the instruction type is completely invalid, also considered an instruction error 204 1/1 assign instr_error = prim_mubi_pkg::mubi4_test_invalid(tl_i.a_user.instr_type) | Tests: T4 T5 T1  205 (prim_mubi_pkg::mubi4_test_true_strict(tl_i.a_user.instr_type) & 206 prim_mubi_pkg::mubi4_test_false_loose(en_ifetch_i)); 207 208 1/1 assign err_internal = addr_align_err | malformed_meta_err | tl_err | instr_error | intg_error; Tests: T4 T5 T1  209 210 // Don't allow unsupported values. 211 1/1 assign malformed_meta_err = tl_a_user_chk(tl_i.a_user); Tests: T4 T5 T1  212 213 // addr_align_err 214 // Raised if addr isn't aligned with the size 215 // Read size error is checked in tlul_assert.sv 216 // Here is it added due to the limitation of register interface. 217 always_comb begin 218 1/1 if (wr_req) begin Tests: T4 T5 T1  219 // Only word-align is accepted based on comportability spec 220 1/1 addr_align_err = |tl_i.a_address[1:0]; Tests: T5 T1 T2  221 end else begin 222 // No request 223 1/1 addr_align_err = 1'b0; Tests: T4 T5 T1 

Cond Coverage for Module : tlul_adapter_reg
TotalCoveredPercent
Conditions494795.92
Logical494795.92
Non-Logical00
Event00

 LINE       77
 EXPRESSION (tl_i.a_valid & tl_o.a_ready)
             ------1-----   ------2-----
-1--2-StatusTests
01CoveredT4,T5,T1
10CoveredT4,T5,T1
11CoveredT4,T5,T1

 LINE       78
 EXPRESSION (tl_o.d_valid & tl_i.d_ready)
             ------1-----   ------2-----
-1--2-StatusTests
01CoveredT4,T5,T1
10CoveredT5,T1,T2
11CoveredT4,T5,T1

 LINE       80
 EXPRESSION (a_ack & ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData)))
             --1--   ----------------------------------2---------------------------------
-1--2-StatusTests
01CoveredT5,T1,T2
10CoveredT4,T5,T1
11CoveredT5,T1,T2

 LINE       80
 SUB-EXPRESSION ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData))
                 ---------------1--------------   ----------------2----------------
-1--2-StatusTests
00CoveredT4,T5,T1
01CoveredT5,T1,T2
10CoveredT5,T1,T2

 LINE       80
 SUB-EXPRESSION (tl_i.a_opcode == PutFullData)
                ---------------1--------------
-1-StatusTests
0CoveredT4,T5,T1
1CoveredT5,T1,T2

 LINE       80
 SUB-EXPRESSION (tl_i.a_opcode == PutPartialData)
                ----------------1----------------
-1-StatusTests
0CoveredT4,T5,T1
1CoveredT5,T1,T2

 LINE       81
 EXPRESSION (a_ack & (tl_i.a_opcode == Get))
             --1--   -----------2----------
-1--2-StatusTests
01CoveredT4,T5,T1
10CoveredT5,T1,T2
11CoveredT4,T5,T1

 LINE       81
 SUB-EXPRESSION (tl_i.a_opcode == Get)
                -----------1----------
-1-StatusTests
0CoveredT4,T5,T1
1CoveredT4,T5,T1

 LINE       83
 EXPRESSION (wr_req & ((~err_internal)))
             ---1--   --------2--------
-1--2-StatusTests
01CoveredT4,T5,T1
10CoveredT27,T192,T156
11CoveredT5,T1,T2

 LINE       84
 EXPRESSION (rd_req & ((~err_internal)))
             ---1--   --------2--------
-1--2-StatusTests
01CoveredT4,T5,T1
10CoveredT27,T192,T156
11CoveredT4,T5,T1

 LINE       109
 EXPRESSION (rd_req ? AccessAckData : AccessAck)
             ---1--
-1-StatusTests
0CoveredT5,T1,T2
1CoveredT4,T5,T1

 LINE       145
 EXPRESSION ((error_i || err_internal || wr_req) ? '1 : rdata_i)
             -----------------1-----------------
-1-StatusTests
0CoveredT4,T5,T1
1CoveredT5,T1,T2

 LINE       145
 SUB-EXPRESSION (error_i || err_internal || wr_req)
                 ---1---    ------2-----    ---3--
-1--2--3-StatusTests
000CoveredT4,T5,T1
001CoveredT5,T1,T2
010CoveredT27,T192,T156
100CoveredT35,T331,T342

 LINE       146
 EXPRESSION (error_i || err_internal)
             ---1---    ------2-----
-1--2-StatusTests
00CoveredT4,T5,T1
01CoveredT27,T192,T156
10CoveredT336,T34,T337

 LINE       154
 SUB-EXPRESSION (outstanding_q | (tl_i.a_valid & busy_i))
                 ------1------   -----------2-----------
-1--2-StatusTests
00CoveredT4,T5,T1
01CoveredT5,T13,T14
10CoveredT4,T5,T1

 LINE       154
 SUB-EXPRESSION (tl_i.a_valid & busy_i)
                 ------1-----   ---2--
-1--2-StatusTests
01CoveredT85,T87,T99
10CoveredT4,T5,T1
11CoveredT5,T1,T2

 LINE       208
 EXPRESSION (addr_align_err | malformed_meta_err | tl_err | instr_error | intg_error)
             -------1------   ---------2--------   ---3--   -----4-----   -----5----
-1--2--3--4--5-StatusTests
00000CoveredT4,T5,T1
00001Unreachable
00010Not Covered
00100CoveredT2,T3,T69
01000Not Covered
10000CoveredT35,T331,T345

Branch Coverage for Module : tlul_adapter_reg
Line No.TotalCoveredPercent
Branches 14 14 100.00
IF 95 4 4 100.00
IF 101 4 4 100.00
IF 218 2 2 100.00
IF 141 4 4 100.00


95 if (!rst_ni) outstanding_q <= 1'b0; -1- ==> 96 else if (a_ack) outstanding_q <= 1'b1; -2- ==> 97 else if (d_ack) outstanding_q <= 1'b0; -3- ==> MISSING_ELSE ==>

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


101 if (!rst_ni) begin -1- 102 reqid_q <= '0; ==> 103 reqsz_q <= '0; 104 rspop_q <= AccessAck; 105 end else if (a_ack) begin -2- 106 reqid_q <= tl_i.a_source; 107 reqsz_q <= tl_i.a_size; 108 // Return AccessAckData regardless of error 109 rspop_q <= (rd_req) ? AccessAckData : AccessAck ; -3- ==> ==> 110 end MISSING_ELSE ==>

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


218 if (wr_req) begin -1- 219 // Only word-align is accepted based on comportability spec 220 addr_align_err = |tl_i.a_address[1:0]; ==> 221 end else begin 222 // No request 223 addr_align_err = 1'b0; ==>

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


141 if (!rst_ni) begin -1- 142 rdata_q <= '0; ==> 143 error_q <= 1'b0; 144 end else if (a_ack) begin -2- 145 rdata_q <= (error_i || err_internal || wr_req) ? '1 : rdata_i; -3- ==> ==> 146 error_q <= error_i || err_internal; 147 end MISSING_ELSE ==>

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


Assert Coverage for Module : tlul_adapter_reg
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
AllowedLatency_A 920 920 0 0
MatchedWidthAssert 920 920 0 0


AllowedLatency_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 920 920 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T5 1 1 0 0
T8 1 1 0 0
T13 1 1 0 0
T14 1 1 0 0
T15 1 1 0 0
T16 1 1 0 0

MatchedWidthAssert
NameAttemptsReal SuccessesFailuresIncomplete
Total 920 920 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T5 1 1 0 0
T8 1 1 0 0
T13 1 1 0 0
T14 1 1 0 0
T15 1 1 0 0
T16 1 1 0 0

Line Coverage for Instance : tb.dut.u_reg.u_reg_if
Line No.TotalCoveredPercent
TOTAL3838100.00
CONT_ASSIGN7711100.00
CONT_ASSIGN7811100.00
CONT_ASSIGN8011100.00
CONT_ASSIGN8111100.00
CONT_ASSIGN8311100.00
CONT_ASSIGN8411100.00
CONT_ASSIGN8511100.00
CONT_ASSIGN8611100.00
CONT_ASSIGN9111100.00
ALWAYS9566100.00
ALWAYS10188100.00
ALWAYS14166100.00
CONT_ASSIGN14911100.00
CONT_ASSIGN15011100.00
CONT_ASSIGN15411100.00
CONT_ASSIGN20411100.00
CONT_ASSIGN20811100.00
CONT_ASSIGN21111100.00
ALWAYS21833100.00

76 77 1/1 assign a_ack = tl_i.a_valid & tl_o.a_ready; Tests: T4 T5 T1  78 1/1 assign d_ack = tl_o.d_valid & tl_i.d_ready; Tests: T4 T5 T1  79 // Request signal 80 1/1 assign wr_req = a_ack & ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData)); Tests: T4 T5 T1  81 1/1 assign rd_req = a_ack & (tl_i.a_opcode == Get); Tests: T4 T5 T1  82 83 1/1 assign we_o = wr_req & ~err_internal; Tests: T4 T5 T1  84 1/1 assign re_o = rd_req & ~err_internal; Tests: T4 T5 T1  85 1/1 assign wdata_o = tl_i.a_data; Tests: T4 T5 T1  86 1/1 assign be_o = tl_i.a_mask; Tests: T4 T5 T1  87 88 if (RegAw <= 2) begin : gen_only_one_reg 89 assign addr_o = '0; 90 end else begin : gen_more_regs 91 1/1 assign addr_o = {tl_i.a_address[RegAw-1:2], 2'b00}; // generate always word-align Tests: T4 T5 T1  92 end 93 94 always_ff @(posedge clk_i or negedge rst_ni) begin 95 2/2 if (!rst_ni) outstanding_q <= 1'b0; Tests: T4 T5 T1  | T4 T5 T1  96 2/2 else if (a_ack) outstanding_q <= 1'b1; Tests: T4 T5 T1  | T4 T5 T1  97 2/2 else if (d_ack) outstanding_q <= 1'b0; Tests: T4 T5 T1  | T4 T5 T1  MISSING_ELSE 98 end 99 100 always_ff @(posedge clk_i or negedge rst_ni) begin 101 1/1 if (!rst_ni) begin Tests: T4 T5 T1  102 1/1 reqid_q <= '0; Tests: T4 T5 T1  103 1/1 reqsz_q <= '0; Tests: T4 T5 T1  104 1/1 rspop_q <= AccessAck; Tests: T4 T5 T1  105 1/1 end else if (a_ack) begin Tests: T4 T5 T1  106 1/1 reqid_q <= tl_i.a_source; Tests: T4 T5 T1  107 1/1 reqsz_q <= tl_i.a_size; Tests: T4 T5 T1  108 // Return AccessAckData regardless of error 109 1/1 rspop_q <= (rd_req) ? AccessAckData : AccessAck ; Tests: T4 T5 T1  110 end MISSING_ELSE 111 end 112 113 if (AccessLatency == 1) begin : gen_access_latency1 114 logic wr_req_q, rd_req_q; 115 always_ff @(posedge clk_i or negedge rst_ni) begin 116 if (!rst_ni) begin 117 rdata_q <= '0; 118 error_q <= 1'b0; 119 wr_req_q <= 1'b0; 120 rd_req_q <= 1'b0; 121 end else begin 122 rd_req_q <= rd_req; 123 wr_req_q <= wr_req; 124 // Addressing phase 125 if (a_ack) begin 126 error_q <= err_internal; 127 // Response phase 128 end else begin 129 error_q <= error; 130 rdata_q <= rdata; 131 end 132 end 133 end 134 assign rdata = (error_i || error_q || wr_req_q) ? '1 : 135 (rd_req_q) ? rdata_i : 136 rdata_q; // backpressure case 137 assign error = (rd_req_q || wr_req_q) ? (error_q || error_i) : 138 error_q; // backpressure case 139 end else begin : gen_access_latency0 140 always_ff @(posedge clk_i or negedge rst_ni) begin 141 1/1 if (!rst_ni) begin Tests: T4 T5 T1  142 1/1 rdata_q <= '0; Tests: T4 T5 T1  143 1/1 error_q <= 1'b0; Tests: T4 T5 T1  144 1/1 end else if (a_ack) begin Tests: T4 T5 T1  145 1/1 rdata_q <= (error_i || err_internal || wr_req) ? '1 : rdata_i; Tests: T4 T5 T1  146 1/1 error_q <= error_i || err_internal; Tests: T4 T5 T1  147 end MISSING_ELSE 148 end 149 1/1 assign rdata = rdata_q; Tests: T4 T5 T1  150 1/1 assign error = error_q; Tests: T4 T5 T1  151 end 152 153 tlul_pkg::tl_d2h_t tl_o_pre; 154 1/1 assign tl_o_pre = '{ Tests: T4 T5 T1  155 // busy is selected based on address 156 // thus if there is no valid transaction, we should ignore busy 157 a_ready: ~(outstanding_q | tl_i.a_valid & busy_i), 158 d_valid: outstanding_q, 159 d_opcode: rspop_q, 160 d_param: '0, 161 d_size: reqsz_q, 162 d_source: reqid_q, 163 d_sink: '0, 164 d_data: rdata, 165 d_user: '0, 166 d_error: error 167 }; 168 169 // outgoing integrity generation 170 tlul_rsp_intg_gen #( 171 .EnableRspIntgGen(EnableRspIntgGen), 172 .EnableDataIntgGen(EnableDataIntgGen) 173 ) u_rsp_intg_gen ( 174 .tl_i(tl_o_pre), 175 .tl_o(tl_o) 176 ); 177 178 if (CmdIntgCheck) begin : gen_cmd_intg_check 179 logic intg_error_q; 180 tlul_cmd_intg_chk u_cmd_intg_chk ( 181 .tl_i(tl_i), 182 .err_o(intg_error) 183 ); 184 // permanently latch integrity error until reset 185 always_ff @(posedge clk_i or negedge rst_ni) begin 186 if (!rst_ni) begin 187 intg_error_q <= 1'b0; 188 end else if (intg_error) begin 189 intg_error_q <= 1'b1; 190 end 191 end 192 assign intg_error_o = intg_error_q; 193 end else begin : gen_no_cmd_intg_check 194 assign intg_error = 1'b0; 195 assign intg_error_o = 1'b0; 196 end 197 198 //////////////////// 199 // Error Handling // 200 //////////////////// 201 202 // An instruction type transaction is only valid if en_ifetch is enabled 203 // If the instruction type is completely invalid, also considered an instruction error 204 1/1 assign instr_error = prim_mubi_pkg::mubi4_test_invalid(tl_i.a_user.instr_type) | Tests: T4 T5 T1  205 (prim_mubi_pkg::mubi4_test_true_strict(tl_i.a_user.instr_type) & 206 prim_mubi_pkg::mubi4_test_false_loose(en_ifetch_i)); 207 208 1/1 assign err_internal = addr_align_err | malformed_meta_err | tl_err | instr_error | intg_error; Tests: T4 T5 T1  209 210 // Don't allow unsupported values. 211 1/1 assign malformed_meta_err = tl_a_user_chk(tl_i.a_user); Tests: T4 T5 T1  212 213 // addr_align_err 214 // Raised if addr isn't aligned with the size 215 // Read size error is checked in tlul_assert.sv 216 // Here is it added due to the limitation of register interface. 217 always_comb begin 218 1/1 if (wr_req) begin Tests: T4 T5 T1  219 // Only word-align is accepted based on comportability spec 220 1/1 addr_align_err = |tl_i.a_address[1:0]; Tests: T5 T1 T2  221 end else begin 222 // No request 223 1/1 addr_align_err = 1'b0; Tests: T4 T5 T1 

Cond Coverage for Instance : tb.dut.u_reg.u_reg_if
TotalCoveredPercent
Conditions484797.92
Logical484797.92
Non-Logical00
Event00

 LINE       77
 EXPRESSION (tl_i.a_valid & tl_o.a_ready)
             ------1-----   ------2-----
-1--2-StatusTests
01CoveredT4,T5,T1
10CoveredT4,T5,T1
11CoveredT4,T5,T1

 LINE       78
 EXPRESSION (tl_o.d_valid & tl_i.d_ready)
             ------1-----   ------2-----
-1--2-StatusTests
01CoveredT4,T5,T1
10CoveredT5,T1,T2
11CoveredT4,T5,T1

 LINE       80
 EXPRESSION (a_ack & ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData)))
             --1--   ----------------------------------2---------------------------------
-1--2-StatusTests
01CoveredT5,T1,T2
10CoveredT4,T5,T1
11CoveredT5,T1,T2

 LINE       80
 SUB-EXPRESSION ((tl_i.a_opcode == PutFullData) | (tl_i.a_opcode == PutPartialData))
                 ---------------1--------------   ----------------2----------------
-1--2-StatusTests
00CoveredT4,T5,T1
01CoveredT5,T1,T2
10CoveredT5,T1,T2

 LINE       80
 SUB-EXPRESSION (tl_i.a_opcode == PutFullData)
                ---------------1--------------
-1-StatusTests
0CoveredT4,T5,T1
1CoveredT5,T1,T2

 LINE       80
 SUB-EXPRESSION (tl_i.a_opcode == PutPartialData)
                ----------------1----------------
-1-StatusTests
0CoveredT4,T5,T1
1CoveredT5,T1,T2

 LINE       81
 EXPRESSION (a_ack & (tl_i.a_opcode == Get))
             --1--   -----------2----------
-1--2-StatusTests
01CoveredT4,T5,T1
10CoveredT5,T1,T2
11CoveredT4,T5,T1

 LINE       81
 SUB-EXPRESSION (tl_i.a_opcode == Get)
                -----------1----------
-1-StatusTests
0CoveredT4,T5,T1
1CoveredT4,T5,T1

 LINE       83
 EXPRESSION (wr_req & ((~err_internal)))
             ---1--   --------2--------
-1--2-StatusTests
01CoveredT4,T5,T1
10CoveredT27,T192,T156
11CoveredT5,T1,T2

 LINE       84
 EXPRESSION (rd_req & ((~err_internal)))
             ---1--   --------2--------
-1--2-StatusTests
01CoveredT4,T5,T1
10CoveredT27,T192,T156
11CoveredT4,T5,T1

 LINE       109
 EXPRESSION (rd_req ? AccessAckData : AccessAck)
             ---1--
-1-StatusTests
0CoveredT5,T1,T2
1CoveredT4,T5,T1

 LINE       145
 EXPRESSION ((error_i || err_internal || wr_req) ? '1 : rdata_i)
             -----------------1-----------------
-1-StatusTests
0CoveredT4,T5,T1
1CoveredT5,T1,T2

 LINE       145
 SUB-EXPRESSION (error_i || err_internal || wr_req)
                 ---1---    ------2-----    ---3--
-1--2--3-StatusTests
000CoveredT4,T5,T1
001CoveredT5,T1,T2
010CoveredT27,T192,T156
100CoveredT35,T331,T342

 LINE       146
 EXPRESSION (error_i || err_internal)
             ---1---    ------2-----
-1--2-StatusTests
00CoveredT4,T5,T1
01CoveredT27,T192,T156
10CoveredT336,T34,T337

 LINE       154
 SUB-EXPRESSION (outstanding_q | (tl_i.a_valid & busy_i))
                 ------1------   -----------2-----------
-1--2-StatusTests
00CoveredT4,T5,T1
01CoveredT5,T13,T14
10CoveredT4,T5,T1

 LINE       154
 SUB-EXPRESSION (tl_i.a_valid & busy_i)
                 ------1-----   ---2--
-1--2-StatusTests
01CoveredT85,T87,T99
10CoveredT4,T5,T1
11CoveredT5,T1,T2

 LINE       208
 EXPRESSION (addr_align_err | malformed_meta_err | tl_err | instr_error | intg_error)
             -------1------   ---------2--------   ---3--   -----4-----   -----5----
-1--2--3--4--5-StatusTestsExclude Annotation
00000CoveredT4,T5,T1
00001Unreachable
00010Not Covered
00100CoveredT2,T3,T69
01000Excluded VC_COV_UNR
10000CoveredT35,T331,T345

Branch Coverage for Instance : tb.dut.u_reg.u_reg_if
Line No.TotalCoveredPercent
Branches 14 14 100.00
IF 95 4 4 100.00
IF 101 4 4 100.00
IF 218 2 2 100.00
IF 141 4 4 100.00


95 if (!rst_ni) outstanding_q <= 1'b0; -1- ==> 96 else if (a_ack) outstanding_q <= 1'b1; -2- ==> 97 else if (d_ack) outstanding_q <= 1'b0; -3- ==> MISSING_ELSE ==>

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


101 if (!rst_ni) begin -1- 102 reqid_q <= '0; ==> 103 reqsz_q <= '0; 104 rspop_q <= AccessAck; 105 end else if (a_ack) begin -2- 106 reqid_q <= tl_i.a_source; 107 reqsz_q <= tl_i.a_size; 108 // Return AccessAckData regardless of error 109 rspop_q <= (rd_req) ? AccessAckData : AccessAck ; -3- ==> ==> 110 end MISSING_ELSE ==>

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


218 if (wr_req) begin -1- 219 // Only word-align is accepted based on comportability spec 220 addr_align_err = |tl_i.a_address[1:0]; ==> 221 end else begin 222 // No request 223 addr_align_err = 1'b0; ==>

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


141 if (!rst_ni) begin -1- 142 rdata_q <= '0; ==> 143 error_q <= 1'b0; 144 end else if (a_ack) begin -2- 145 rdata_q <= (error_i || err_internal || wr_req) ? '1 : rdata_i; -3- ==> ==> 146 error_q <= error_i || err_internal; 147 end MISSING_ELSE ==>

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


Assert Coverage for Instance : tb.dut.u_reg.u_reg_if
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 2 2 100.00 2 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 2 2 100.00 2 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
AllowedLatency_A 920 920 0 0
MatchedWidthAssert 920 920 0 0


AllowedLatency_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 920 920 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T5 1 1 0 0
T8 1 1 0 0
T13 1 1 0 0
T14 1 1 0 0
T15 1 1 0 0
T16 1 1 0 0

MatchedWidthAssert
NameAttemptsReal SuccessesFailuresIncomplete
Total 920 920 0 0
T1 1 1 0 0
T2 1 1 0 0
T3 1 1 0 0
T4 1 1 0 0
T5 1 1 0 0
T8 1 1 0 0
T13 1 1 0 0
T14 1 1 0 0
T15 1 1 0 0
T16 1 1 0 0

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