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



Module Instance : tb.dut.top_earlgrey.u_rv_core_ibex.u_reg_cfg.u_socket

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
95.64 94.64 93.18 94.74 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
96.72 96.25 94.64 96.00 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
99.92 100.00 99.68 100.00 100.00 u_reg_cfg


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
fifo_h 100.00 100.00 100.00 100.00 100.00
gen_dfifo[0].fifo_d 100.00 100.00 100.00 100.00 100.00
gen_dfifo[1].fifo_d 100.00 100.00 100.00 100.00 100.00

Line Coverage for Module : tlul_socket_1n
Line No.TotalCoveredPercent
TOTAL565394.64
CONT_ASSIGN11211100.00
CONT_ASSIGN11311100.00
ALWAYS11699100.00
CONT_ASSIGN13211100.00
CONT_ASSIGN14511100.00
CONT_ASSIGN15511100.00
CONT_ASSIGN15511100.00
CONT_ASSIGN15711100.00
CONT_ASSIGN15711100.00
CONT_ASSIGN15811100.00
CONT_ASSIGN15811100.00
CONT_ASSIGN15911100.00
CONT_ASSIGN15911100.00
CONT_ASSIGN16011100.00
CONT_ASSIGN16011100.00
CONT_ASSIGN16111100.00
CONT_ASSIGN16111100.00
CONT_ASSIGN16211100.00
CONT_ASSIGN16211100.00
CONT_ASSIGN16311100.00
CONT_ASSIGN16311100.00
CONT_ASSIGN16411100.00
CONT_ASSIGN16411100.00
CONT_ASSIGN16711100.00
CONT_ASSIGN16711100.00
CONT_ASSIGN17111100.00
CONT_ASSIGN17111100.00
ALWAYS18066100.00
CONT_ASSIGN18911100.00
ALWAYS19244100.00
CONT_ASSIGN19711100.00
CONT_ASSIGN19811100.00
CONT_ASSIGN199100.00
CONT_ASSIGN20011100.00
CONT_ASSIGN20111100.00
CONT_ASSIGN202100.00
CONT_ASSIGN20311100.00
CONT_ASSIGN20411100.00
CONT_ASSIGN20511100.00
CONT_ASSIGN252100.00

111 112 1/1 assign accept_t_req = tl_t_o.a_valid & tl_t_i.a_ready; Tests: T1 T2 T3  113 1/1 assign accept_t_rsp = tl_t_i.d_valid & tl_t_o.d_ready; Tests: T1 T2 T3  114 115 always_ff @(posedge clk_i or negedge rst_ni) begin 116 1/1 if (!rst_ni) begin Tests: T1 T2 T3  117 1/1 num_req_outstanding <= '0; Tests: T1 T2 T3  118 1/1 dev_select_outstanding <= '0; Tests: T1 T2 T3  119 1/1 end else if (accept_t_req) begin Tests: T1 T2 T3  120 1/1 if (!accept_t_rsp) begin Tests: T1 T2 T3  121 1/1 num_req_outstanding <= num_req_outstanding + 1'b1; Tests: T1 T2 T3  122 end ==> MISSING_ELSE 123 1/1 dev_select_outstanding <= dev_select_t; Tests: T1 T2 T3  124 1/1 end else if (accept_t_rsp) begin Tests: T1 T2 T3  125 1/1 num_req_outstanding <= num_req_outstanding - 1'b1; Tests: T1 T2 T3  126 end MISSING_ELSE 127 end 128 129 `ASSERT(NotOverflowed_A, 130 accept_t_req && !accept_t_rsp -> num_req_outstanding <= MaxOutstanding) 131 132 1/1 assign hold_all_requests = Tests: T1 T2 T3  133 (num_req_outstanding != '0) & 134 (dev_select_t != dev_select_outstanding); 135 136 // Make N copies of 't' request side with modified reqvalid, call 137 // them 'u[0]' .. 'u[n-1]'. 138 139 tlul_pkg::tl_h2d_t tl_u_o [N+1]; 140 tlul_pkg::tl_d2h_t tl_u_i [N+1]; 141 142 // ensure that when a device is not selected, both command 143 // data integrity can never match 144 tlul_pkg::tl_a_user_t blanked_auser; 145 1/1 assign blanked_auser = '{ Tests: T1 T2 T3  146 rsvd: tl_t_o.a_user.rsvd, 147 instr_type: tl_t_o.a_user.instr_type, 148 cmd_intg: tlul_pkg::get_bad_cmd_intg(tl_t_o), 149 data_intg: tlul_pkg::get_bad_data_intg(tlul_pkg::BlankedAData) 150 }; 151 152 // if a host is not selected, or if requests are held off, blank the bus 153 for (genvar i = 0 ; i < N ; i++) begin : gen_u_o 154 logic dev_select; 155 2/2 assign dev_select = dev_select_t == NWD'(i) & ~hold_all_requests; Tests: T1 T2 T3  | T1 T2 T3  156 157 2/2 assign tl_u_o[i].a_valid = tl_t_o.a_valid & dev_select; Tests: T1 T2 T3  | T1 T2 T3  158 2/2 assign tl_u_o[i].a_opcode = tl_t_o.a_opcode; Tests: T2 T3 T4  | T2 T3 T4  159 2/2 assign tl_u_o[i].a_param = tl_t_o.a_param; Tests: T94 T95 T96  | T94 T95 T96  160 2/2 assign tl_u_o[i].a_size = tl_t_o.a_size; Tests: T1 T2 T3  | T1 T2 T3  161 2/2 assign tl_u_o[i].a_source = tl_t_o.a_source; Tests: T1 T2 T3  | T1 T2 T3  162 2/2 assign tl_u_o[i].a_address = tl_t_o.a_address; Tests: T1 T2 T3  | T1 T2 T3  163 2/2 assign tl_u_o[i].a_mask = tl_t_o.a_mask; Tests: T1 T2 T3  | T1 T2 T3  164 2/2 assign tl_u_o[i].a_data = dev_select ? Tests: T1 T2 T3  | T1 T2 T3  165 tl_t_o.a_data : 166 tlul_pkg::BlankedAData; 167 2/2 assign tl_u_o[i].a_user = dev_select ? Tests: T1 T2 T3  | T1 T2 T3  168 tl_t_o.a_user : 169 blanked_auser; 170 171 2/2 assign tl_u_o[i].d_ready = tl_t_o.d_ready; Tests: T1 T2 T3  | T1 T2 T3  172 end 173 174 175 tlul_pkg::tl_d2h_t tl_t_p ; 176 177 // for the returning reqready, only look at the device we're addressing 178 logic hfifo_reqready; 179 always_comb begin 180 1/1 hfifo_reqready = tl_u_i[N].a_ready; // default to error Tests: T1 T2 T3  181 1/1 for (int idx = 0 ; idx < N ; idx++) begin Tests: T1 T2 T3  182 //if (dev_select_outstanding == NWD'(idx)) hfifo_reqready = tl_u_i[idx].a_ready; 183 2/2 if (dev_select_t == NWD'(idx)) hfifo_reqready = tl_u_i[idx].a_ready; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 184 end 185 2/2 if (hold_all_requests) hfifo_reqready = 1'b0; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 186 end 187 // Adding a_valid as a qualifier. This prevents the a_ready from having unknown value 188 // when the address is unknown and the Host TL-UL FIFO is bypass mode. 189 1/1 assign tl_t_i.a_ready = tl_t_o.a_valid & hfifo_reqready; Tests: T1 T2 T3  190 191 always_comb begin 192 1/1 tl_t_p = tl_u_i[N]; Tests: T1 T2 T3  193 1/1 for (int idx = 0 ; idx < N ; idx++) begin Tests: T1 T2 T3  194 2/2 if (dev_select_outstanding == NWD'(idx)) tl_t_p = tl_u_i[idx]; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 195 end 196 end 197 1/1 assign tl_t_i.d_valid = tl_t_p.d_valid ; Tests: T1 T2 T3  198 1/1 assign tl_t_i.d_opcode = tl_t_p.d_opcode; Tests: T2 T3 T4  199 0/1 ==> assign tl_t_i.d_param = tl_t_p.d_param ; 200 1/1 assign tl_t_i.d_size = tl_t_p.d_size ; Tests: T1 T2 T3  201 1/1 assign tl_t_i.d_source = tl_t_p.d_source; Tests: T1 T2 T3  202 0/1 ==> assign tl_t_i.d_sink = tl_t_p.d_sink ; 203 1/1 assign tl_t_i.d_data = tl_t_p.d_data ; Tests: T2 T3 T5  204 1/1 assign tl_t_i.d_user = tl_t_p.d_user ; Tests: T1 T2 T3  205 1/1 assign tl_t_i.d_error = tl_t_p.d_error ; Tests: T178 T401 T402  206 207 // Instantiate all the device FIFOs 208 for (genvar i = 0 ; i < N ; i++) begin : gen_dfifo 209 tlul_fifo_sync #( 210 .ReqPass(DReqPass[i]), 211 .RspPass(DRspPass[i]), 212 .ReqDepth(DReqDepth[i*4+:4]), 213 .RspDepth(DRspDepth[i*4+:4]) 214 ) fifo_d ( 215 .clk_i, 216 .rst_ni, 217 .tl_h_i (tl_u_o[i]), 218 .tl_h_o (tl_u_i[i]), 219 .tl_d_o (tl_d_o[i]), 220 .tl_d_i (tl_d_i[i]), 221 .spare_req_i (1'b0), 222 .spare_req_o (), 223 .spare_rsp_i (1'b0), 224 .spare_rsp_o ()); 225 end 226 227 // Instantiate the error responder. It's only needed if a value greater than 228 // N-1 is actually representable in NWD bits. 229 if ($clog2(N+1) <= NWD) begin : gen_err_resp 230 assign tl_u_o[N].d_ready = tl_t_o.d_ready; 231 assign tl_u_o[N].a_valid = tl_t_o.a_valid & 232 (dev_select_t >= NWD'(N)) & 233 ~hold_all_requests; 234 assign tl_u_o[N].a_opcode = tl_t_o.a_opcode; 235 assign tl_u_o[N].a_param = tl_t_o.a_param; 236 assign tl_u_o[N].a_size = tl_t_o.a_size; 237 assign tl_u_o[N].a_source = tl_t_o.a_source; 238 assign tl_u_o[N].a_address = tl_t_o.a_address; 239 assign tl_u_o[N].a_mask = tl_t_o.a_mask; 240 assign tl_u_o[N].a_data = tl_t_o.a_data; 241 assign tl_u_o[N].a_user = tl_t_o.a_user; 242 tlul_err_resp err_resp ( 243 .clk_i, 244 .rst_ni, 245 .tl_h_i (tl_u_o[N]), 246 .tl_h_o (tl_u_i[N]) 247 ); 248 end else begin : gen_no_err_resp // block: gen_err_resp 249 assign tl_u_o[N] = '0; 250 assign tl_u_i[N] = '0; 251 logic unused_sig; 252 0/1 ==> assign unused_sig = ^tl_u_o[N];

Cond Coverage for Module : tlul_socket_1n
TotalCoveredPercent
Conditions444193.18
Logical444193.18
Non-Logical00
Event00

 LINE       112
 EXPRESSION (tl_t_o.a_valid & tl_t_i.a_ready)
             -------1------   -------2------
-1--2-StatusTests
01Not Covered
10CoveredT394,T395,T403
11CoveredT1,T2,T3

 LINE       113
 EXPRESSION (tl_t_i.d_valid & tl_t_o.d_ready)
             -------1------   -------2------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT183,T404,T405
11CoveredT1,T2,T3

 LINE       132
 EXPRESSION ((num_req_outstanding != '0) & (dev_select_t != dev_select_outstanding))
             -------------1-------------   --------------------2-------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT2,T3,T4
11CoveredT1,T2,T3

 LINE       132
 SUB-EXPRESSION (num_req_outstanding != '0)
                -------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       132
 SUB-EXPRESSION (dev_select_t != dev_select_outstanding)
                --------------------1-------------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       155
 EXPRESSION ((dev_select_t == 1'(0)) & ((~hold_all_requests)))
             -----------1-----------   -----------2----------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       155
 SUB-EXPRESSION (dev_select_t == 1'(0))
                -----------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       155
 EXPRESSION ((dev_select_t == 1'(1)) & ((~hold_all_requests)))
             -----------1-----------   -----------2----------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT1,T2,T3

 LINE       155
 SUB-EXPRESSION (dev_select_t == 1'(1))
                -----------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       157
 EXPRESSION (tl_t_o.a_valid & gen_u_o[0].dev_select)
             -------1------   ----------2----------
-1--2-StatusTests
01Not Covered
10CoveredT2,T3,T4
11CoveredT1,T2,T3

 LINE       157
 EXPRESSION (tl_t_o.a_valid & gen_u_o[1].dev_select)
             -------1------   ----------2----------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT2,T3,T4

 LINE       164
 EXPRESSION (gen_u_o[0].dev_select ? tl_t_o.a_data : tlul_pkg::BlankedAData)
             ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       164
 EXPRESSION (gen_u_o[1].dev_select ? tl_t_o.a_data : tlul_pkg::BlankedAData)
             ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       167
 EXPRESSION (gen_u_o[0].dev_select ? tl_t_o.a_user : blanked_auser)
             ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       167
 EXPRESSION (gen_u_o[1].dev_select ? tl_t_o.a_user : blanked_auser)
             ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       183
 EXPRESSION (dev_select_t == 1'(idx))
            ------------1------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       189
 EXPRESSION (tl_t_o.a_valid & hfifo_reqready)
             -------1------   -------2------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT394,T395,T403
11CoveredT1,T2,T3

 LINE       194
 EXPRESSION (dev_select_outstanding == 1'(idx))
            -----------------1-----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

Branch Coverage for Module : tlul_socket_1n
Line No.TotalCoveredPercent
Branches 19 18 94.74
TERNARY 164 2 2 100.00
TERNARY 167 2 2 100.00
TERNARY 164 2 2 100.00
TERNARY 167 2 2 100.00
IF 116 5 4 80.00
IF 183 2 2 100.00
IF 185 2 2 100.00
IF 194 2 2 100.00


164 assign tl_u_o[i].a_data = dev_select ? -1- ==> ==>

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


167 assign tl_u_o[i].a_user = dev_select ? -1- ==> ==>

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


164 assign tl_u_o[i].a_data = dev_select ? -1- ==> ==>

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


167 assign tl_u_o[i].a_user = dev_select ? -1- ==> ==>

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


116 if (!rst_ni) begin -1- 117 num_req_outstanding <= '0; ==> 118 dev_select_outstanding <= '0; 119 end else if (accept_t_req) begin -2- 120 if (!accept_t_rsp) begin -3- 121 num_req_outstanding <= num_req_outstanding + 1'b1; ==> 122 end MISSING_ELSE ==> 123 dev_select_outstanding <= dev_select_t; 124 end else if (accept_t_rsp) begin -4- 125 num_req_outstanding <= num_req_outstanding - 1'b1; ==> 126 end MISSING_ELSE ==>

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


183 if (dev_select_t == NWD'(idx)) hfifo_reqready = tl_u_i[idx].a_ready; -1- ==> MISSING_ELSE ==>

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


185 if (hold_all_requests) hfifo_reqready = 1'b0; -1- ==> MISSING_ELSE ==>

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


194 if (dev_select_outstanding == NWD'(idx)) tl_t_p = tl_u_i[idx]; -1- ==> MISSING_ELSE ==>

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


Assert Coverage for Module : tlul_socket_1n
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
NotOverflowed_A 564125052 564004966 0 0
maxN 2918 2918 0 0


NotOverflowed_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 564125052 564004966 0 0
T1 42275 42213 0 0
T2 91152 91094 0 0
T3 115201 115146 0 0
T4 110863 110808 0 0
T5 83840 83789 0 0
T6 116117 116059 0 0
T30 92780 92722 0 0
T68 219320 219269 0 0
T104 98538 98483 0 0
T105 67890 67832 0 0

maxN
NameAttemptsReal SuccessesFailuresIncomplete
Total 2918 2918 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
T6 1 1 0 0
T30 1 1 0 0
T68 1 1 0 0
T104 1 1 0 0
T105 1 1 0 0

Line Coverage for Instance : tb.dut.top_earlgrey.u_rv_core_ibex.u_reg_cfg.u_socket
Line No.TotalCoveredPercent
TOTAL565394.64
CONT_ASSIGN11211100.00
CONT_ASSIGN11311100.00
ALWAYS11699100.00
CONT_ASSIGN13211100.00
CONT_ASSIGN14511100.00
CONT_ASSIGN15511100.00
CONT_ASSIGN15511100.00
CONT_ASSIGN15711100.00
CONT_ASSIGN15711100.00
CONT_ASSIGN15811100.00
CONT_ASSIGN15811100.00
CONT_ASSIGN15911100.00
CONT_ASSIGN15911100.00
CONT_ASSIGN16011100.00
CONT_ASSIGN16011100.00
CONT_ASSIGN16111100.00
CONT_ASSIGN16111100.00
CONT_ASSIGN16211100.00
CONT_ASSIGN16211100.00
CONT_ASSIGN16311100.00
CONT_ASSIGN16311100.00
CONT_ASSIGN16411100.00
CONT_ASSIGN16411100.00
CONT_ASSIGN16711100.00
CONT_ASSIGN16711100.00
CONT_ASSIGN17111100.00
CONT_ASSIGN17111100.00
ALWAYS18066100.00
CONT_ASSIGN18911100.00
ALWAYS19244100.00
CONT_ASSIGN19711100.00
CONT_ASSIGN19811100.00
CONT_ASSIGN199100.00
CONT_ASSIGN20011100.00
CONT_ASSIGN20111100.00
CONT_ASSIGN202100.00
CONT_ASSIGN20311100.00
CONT_ASSIGN20411100.00
CONT_ASSIGN20511100.00
CONT_ASSIGN252100.00

111 112 1/1 assign accept_t_req = tl_t_o.a_valid & tl_t_i.a_ready; Tests: T1 T2 T3  113 1/1 assign accept_t_rsp = tl_t_i.d_valid & tl_t_o.d_ready; Tests: T1 T2 T3  114 115 always_ff @(posedge clk_i or negedge rst_ni) begin 116 1/1 if (!rst_ni) begin Tests: T1 T2 T3  117 1/1 num_req_outstanding <= '0; Tests: T1 T2 T3  118 1/1 dev_select_outstanding <= '0; Tests: T1 T2 T3  119 1/1 end else if (accept_t_req) begin Tests: T1 T2 T3  120 1/1 if (!accept_t_rsp) begin Tests: T1 T2 T3  121 1/1 num_req_outstanding <= num_req_outstanding + 1'b1; Tests: T1 T2 T3  122 end ==> MISSING_ELSE 123 1/1 dev_select_outstanding <= dev_select_t; Tests: T1 T2 T3  124 1/1 end else if (accept_t_rsp) begin Tests: T1 T2 T3  125 1/1 num_req_outstanding <= num_req_outstanding - 1'b1; Tests: T1 T2 T3  126 end MISSING_ELSE 127 end 128 129 `ASSERT(NotOverflowed_A, 130 accept_t_req && !accept_t_rsp -> num_req_outstanding <= MaxOutstanding) 131 132 1/1 assign hold_all_requests = Tests: T1 T2 T3  133 (num_req_outstanding != '0) & 134 (dev_select_t != dev_select_outstanding); 135 136 // Make N copies of 't' request side with modified reqvalid, call 137 // them 'u[0]' .. 'u[n-1]'. 138 139 tlul_pkg::tl_h2d_t tl_u_o [N+1]; 140 tlul_pkg::tl_d2h_t tl_u_i [N+1]; 141 142 // ensure that when a device is not selected, both command 143 // data integrity can never match 144 tlul_pkg::tl_a_user_t blanked_auser; 145 1/1 assign blanked_auser = '{ Tests: T1 T2 T3  146 rsvd: tl_t_o.a_user.rsvd, 147 instr_type: tl_t_o.a_user.instr_type, 148 cmd_intg: tlul_pkg::get_bad_cmd_intg(tl_t_o), 149 data_intg: tlul_pkg::get_bad_data_intg(tlul_pkg::BlankedAData) 150 }; 151 152 // if a host is not selected, or if requests are held off, blank the bus 153 for (genvar i = 0 ; i < N ; i++) begin : gen_u_o 154 logic dev_select; 155 2/2 assign dev_select = dev_select_t == NWD'(i) & ~hold_all_requests; Tests: T1 T2 T3  | T1 T2 T3  156 157 2/2 assign tl_u_o[i].a_valid = tl_t_o.a_valid & dev_select; Tests: T1 T2 T3  | T1 T2 T3  158 2/2 assign tl_u_o[i].a_opcode = tl_t_o.a_opcode; Tests: T2 T3 T4  | T2 T3 T4  159 2/2 assign tl_u_o[i].a_param = tl_t_o.a_param; Tests: T94 T95 T96  | T94 T95 T96  160 2/2 assign tl_u_o[i].a_size = tl_t_o.a_size; Tests: T1 T2 T3  | T1 T2 T3  161 2/2 assign tl_u_o[i].a_source = tl_t_o.a_source; Tests: T1 T2 T3  | T1 T2 T3  162 2/2 assign tl_u_o[i].a_address = tl_t_o.a_address; Tests: T1 T2 T3  | T1 T2 T3  163 2/2 assign tl_u_o[i].a_mask = tl_t_o.a_mask; Tests: T1 T2 T3  | T1 T2 T3  164 2/2 assign tl_u_o[i].a_data = dev_select ? Tests: T1 T2 T3  | T1 T2 T3  165 tl_t_o.a_data : 166 tlul_pkg::BlankedAData; 167 2/2 assign tl_u_o[i].a_user = dev_select ? Tests: T1 T2 T3  | T1 T2 T3  168 tl_t_o.a_user : 169 blanked_auser; 170 171 2/2 assign tl_u_o[i].d_ready = tl_t_o.d_ready; Tests: T1 T2 T3  | T1 T2 T3  172 end 173 174 175 tlul_pkg::tl_d2h_t tl_t_p ; 176 177 // for the returning reqready, only look at the device we're addressing 178 logic hfifo_reqready; 179 always_comb begin 180 1/1 hfifo_reqready = tl_u_i[N].a_ready; // default to error Tests: T1 T2 T3  181 1/1 for (int idx = 0 ; idx < N ; idx++) begin Tests: T1 T2 T3  182 //if (dev_select_outstanding == NWD'(idx)) hfifo_reqready = tl_u_i[idx].a_ready; 183 2/2 if (dev_select_t == NWD'(idx)) hfifo_reqready = tl_u_i[idx].a_ready; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 184 end 185 2/2 if (hold_all_requests) hfifo_reqready = 1'b0; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 186 end 187 // Adding a_valid as a qualifier. This prevents the a_ready from having unknown value 188 // when the address is unknown and the Host TL-UL FIFO is bypass mode. 189 1/1 assign tl_t_i.a_ready = tl_t_o.a_valid & hfifo_reqready; Tests: T1 T2 T3  190 191 always_comb begin 192 1/1 tl_t_p = tl_u_i[N]; Tests: T1 T2 T3  193 1/1 for (int idx = 0 ; idx < N ; idx++) begin Tests: T1 T2 T3  194 2/2 if (dev_select_outstanding == NWD'(idx)) tl_t_p = tl_u_i[idx]; Tests: T1 T2 T3  | T1 T2 T3  MISSING_ELSE 195 end 196 end 197 1/1 assign tl_t_i.d_valid = tl_t_p.d_valid ; Tests: T1 T2 T3  198 1/1 assign tl_t_i.d_opcode = tl_t_p.d_opcode; Tests: T2 T3 T4  199 0/1 ==> assign tl_t_i.d_param = tl_t_p.d_param ; 200 1/1 assign tl_t_i.d_size = tl_t_p.d_size ; Tests: T1 T2 T3  201 1/1 assign tl_t_i.d_source = tl_t_p.d_source; Tests: T1 T2 T3  202 0/1 ==> assign tl_t_i.d_sink = tl_t_p.d_sink ; 203 1/1 assign tl_t_i.d_data = tl_t_p.d_data ; Tests: T2 T3 T5  204 1/1 assign tl_t_i.d_user = tl_t_p.d_user ; Tests: T1 T2 T3  205 1/1 assign tl_t_i.d_error = tl_t_p.d_error ; Tests: T178 T401 T402  206 207 // Instantiate all the device FIFOs 208 for (genvar i = 0 ; i < N ; i++) begin : gen_dfifo 209 tlul_fifo_sync #( 210 .ReqPass(DReqPass[i]), 211 .RspPass(DRspPass[i]), 212 .ReqDepth(DReqDepth[i*4+:4]), 213 .RspDepth(DRspDepth[i*4+:4]) 214 ) fifo_d ( 215 .clk_i, 216 .rst_ni, 217 .tl_h_i (tl_u_o[i]), 218 .tl_h_o (tl_u_i[i]), 219 .tl_d_o (tl_d_o[i]), 220 .tl_d_i (tl_d_i[i]), 221 .spare_req_i (1'b0), 222 .spare_req_o (), 223 .spare_rsp_i (1'b0), 224 .spare_rsp_o ()); 225 end 226 227 // Instantiate the error responder. It's only needed if a value greater than 228 // N-1 is actually representable in NWD bits. 229 if ($clog2(N+1) <= NWD) begin : gen_err_resp 230 assign tl_u_o[N].d_ready = tl_t_o.d_ready; 231 assign tl_u_o[N].a_valid = tl_t_o.a_valid & 232 (dev_select_t >= NWD'(N)) & 233 ~hold_all_requests; 234 assign tl_u_o[N].a_opcode = tl_t_o.a_opcode; 235 assign tl_u_o[N].a_param = tl_t_o.a_param; 236 assign tl_u_o[N].a_size = tl_t_o.a_size; 237 assign tl_u_o[N].a_source = tl_t_o.a_source; 238 assign tl_u_o[N].a_address = tl_t_o.a_address; 239 assign tl_u_o[N].a_mask = tl_t_o.a_mask; 240 assign tl_u_o[N].a_data = tl_t_o.a_data; 241 assign tl_u_o[N].a_user = tl_t_o.a_user; 242 tlul_err_resp err_resp ( 243 .clk_i, 244 .rst_ni, 245 .tl_h_i (tl_u_o[N]), 246 .tl_h_o (tl_u_i[N]) 247 ); 248 end else begin : gen_no_err_resp // block: gen_err_resp 249 assign tl_u_o[N] = '0; 250 assign tl_u_i[N] = '0; 251 logic unused_sig; 252 0/1 ==> assign unused_sig = ^tl_u_o[N];

Cond Coverage for Instance : tb.dut.top_earlgrey.u_rv_core_ibex.u_reg_cfg.u_socket
TotalCoveredPercent
Conditions444193.18
Logical444193.18
Non-Logical00
Event00

 LINE       112
 EXPRESSION (tl_t_o.a_valid & tl_t_i.a_ready)
             -------1------   -------2------
-1--2-StatusTests
01Not Covered
10CoveredT394,T395,T403
11CoveredT1,T2,T3

 LINE       113
 EXPRESSION (tl_t_i.d_valid & tl_t_o.d_ready)
             -------1------   -------2------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT183,T404,T405
11CoveredT1,T2,T3

 LINE       132
 EXPRESSION ((num_req_outstanding != '0) & (dev_select_t != dev_select_outstanding))
             -------------1-------------   --------------------2-------------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT2,T3,T4
11CoveredT1,T2,T3

 LINE       132
 SUB-EXPRESSION (num_req_outstanding != '0)
                -------------1-------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       132
 SUB-EXPRESSION (dev_select_t != dev_select_outstanding)
                --------------------1-------------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       155
 EXPRESSION ((dev_select_t == 1'(0)) & ((~hold_all_requests)))
             -----------1-----------   -----------2----------
-1--2-StatusTests
01CoveredT1,T2,T3
10Not Covered
11CoveredT1,T2,T3

 LINE       155
 SUB-EXPRESSION (dev_select_t == 1'(0))
                -----------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       155
 EXPRESSION ((dev_select_t == 1'(1)) & ((~hold_all_requests)))
             -----------1-----------   -----------2----------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT1,T2,T3

 LINE       155
 SUB-EXPRESSION (dev_select_t == 1'(1))
                -----------1-----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       157
 EXPRESSION (tl_t_o.a_valid & gen_u_o[0].dev_select)
             -------1------   ----------2----------
-1--2-StatusTests
01Not Covered
10CoveredT2,T3,T4
11CoveredT1,T2,T3

 LINE       157
 EXPRESSION (tl_t_o.a_valid & gen_u_o[1].dev_select)
             -------1------   ----------2----------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT1,T2,T3
11CoveredT2,T3,T4

 LINE       164
 EXPRESSION (gen_u_o[0].dev_select ? tl_t_o.a_data : tlul_pkg::BlankedAData)
             ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       164
 EXPRESSION (gen_u_o[1].dev_select ? tl_t_o.a_data : tlul_pkg::BlankedAData)
             ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       167
 EXPRESSION (gen_u_o[0].dev_select ? tl_t_o.a_user : blanked_auser)
             ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       167
 EXPRESSION (gen_u_o[1].dev_select ? tl_t_o.a_user : blanked_auser)
             ----------1----------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       183
 EXPRESSION (dev_select_t == 1'(idx))
            ------------1------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

 LINE       189
 EXPRESSION (tl_t_o.a_valid & hfifo_reqready)
             -------1------   -------2------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT394,T395,T403
11CoveredT1,T2,T3

 LINE       194
 EXPRESSION (dev_select_outstanding == 1'(idx))
            -----------------1-----------------
-1-StatusTests
0CoveredT1,T2,T3
1CoveredT1,T2,T3

Branch Coverage for Instance : tb.dut.top_earlgrey.u_rv_core_ibex.u_reg_cfg.u_socket
Line No.TotalCoveredPercent
Branches 19 18 94.74
TERNARY 164 2 2 100.00
TERNARY 167 2 2 100.00
TERNARY 164 2 2 100.00
TERNARY 167 2 2 100.00
IF 116 5 4 80.00
IF 183 2 2 100.00
IF 185 2 2 100.00
IF 194 2 2 100.00


164 assign tl_u_o[i].a_data = dev_select ? -1- ==> ==>

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


167 assign tl_u_o[i].a_user = dev_select ? -1- ==> ==>

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


164 assign tl_u_o[i].a_data = dev_select ? -1- ==> ==>

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


167 assign tl_u_o[i].a_user = dev_select ? -1- ==> ==>

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


116 if (!rst_ni) begin -1- 117 num_req_outstanding <= '0; ==> 118 dev_select_outstanding <= '0; 119 end else if (accept_t_req) begin -2- 120 if (!accept_t_rsp) begin -3- 121 num_req_outstanding <= num_req_outstanding + 1'b1; ==> 122 end MISSING_ELSE ==> 123 dev_select_outstanding <= dev_select_t; 124 end else if (accept_t_rsp) begin -4- 125 num_req_outstanding <= num_req_outstanding - 1'b1; ==> 126 end MISSING_ELSE ==>

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


183 if (dev_select_t == NWD'(idx)) hfifo_reqready = tl_u_i[idx].a_ready; -1- ==> MISSING_ELSE ==>

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


185 if (hold_all_requests) hfifo_reqready = 1'b0; -1- ==> MISSING_ELSE ==>

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


194 if (dev_select_outstanding == NWD'(idx)) tl_t_p = tl_u_i[idx]; -1- ==> MISSING_ELSE ==>

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


Assert Coverage for Instance : tb.dut.top_earlgrey.u_rv_core_ibex.u_reg_cfg.u_socket
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
NotOverflowed_A 564125052 564004966 0 0
maxN 2918 2918 0 0


NotOverflowed_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 564125052 564004966 0 0
T1 42275 42213 0 0
T2 91152 91094 0 0
T3 115201 115146 0 0
T4 110863 110808 0 0
T5 83840 83789 0 0
T6 116117 116059 0 0
T30 92780 92722 0 0
T68 219320 219269 0 0
T104 98538 98483 0 0
T105 67890 67832 0 0

maxN
NameAttemptsReal SuccessesFailuresIncomplete
Total 2918 2918 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
T6 1 1 0 0
T30 1 1 0 0
T68 1 1 0 0
T104 1 1 0 0
T105 1 1 0 0

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