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



Module Instance : tb.dut.top_earlgrey.u_sensor_ctrl_aon

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
92.50 94.59 88.00 79.93 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
90.02 92.12 83.91 79.93 94.15 100.00


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
93.94 92.47 89.34 100.00 top_earlgrey


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
gen_alert_sync_assign[0].u_alert_in_buf 100.00 100.00
gen_alert_sync_assign[10].u_alert_in_buf 100.00 100.00
gen_alert_sync_assign[1].u_alert_in_buf 100.00 100.00
gen_alert_sync_assign[2].u_alert_in_buf 100.00 100.00
gen_alert_sync_assign[3].u_alert_in_buf 100.00 100.00
gen_alert_sync_assign[4].u_alert_in_buf 100.00 100.00
gen_alert_sync_assign[5].u_alert_in_buf 100.00 100.00
gen_alert_sync_assign[6].u_alert_in_buf 100.00 100.00
gen_alert_sync_assign[7].u_alert_in_buf 100.00 100.00
gen_alert_sync_assign[8].u_alert_in_buf 100.00 100.00
gen_alert_sync_assign[9].u_alert_in_buf 100.00 100.00
u_alert_n_sync 100.00 100.00 100.00
u_alert_p_sync 100.00 100.00 100.00
u_init_chg 100.00 100.00 100.00 100.00
u_init_intr 100.00 100.00 100.00 100.00 100.00
u_io_intr 100.00 100.00 100.00 100.00 100.00
u_io_status_chg 100.00 100.00 100.00
u_prim_sec_anchor_buf 100.00 100.00
u_reg 91.99 91.27 82.99 93.72 100.00
u_wake_sync 100.00 100.00 100.00


Since this is the module's only instance, the coverage report is the same as for the module.
Line Coverage for Module : sensor_ctrl
Line No.TotalCoveredPercent
TOTAL11110594.59
ALWAYS18600
ALWAYS18622100.00
CONT_ASSIGN21111100.00
CONT_ASSIGN21111100.00
CONT_ASSIGN21111100.00
CONT_ASSIGN21111100.00
CONT_ASSIGN21111100.00
CONT_ASSIGN21111100.00
CONT_ASSIGN21111100.00
CONT_ASSIGN21111100.00
CONT_ASSIGN21111100.00
CONT_ASSIGN21111100.00
CONT_ASSIGN21111100.00
CONT_ASSIGN21411100.00
CONT_ASSIGN21411100.00
CONT_ASSIGN21411100.00
CONT_ASSIGN21411100.00
CONT_ASSIGN21411100.00
CONT_ASSIGN21411100.00
CONT_ASSIGN21411100.00
CONT_ASSIGN21411100.00
CONT_ASSIGN21411100.00
CONT_ASSIGN21411100.00
CONT_ASSIGN21411100.00
CONT_ASSIGN21711100.00
CONT_ASSIGN21711100.00
CONT_ASSIGN21711100.00
CONT_ASSIGN21711100.00
CONT_ASSIGN21711100.00
CONT_ASSIGN21711100.00
CONT_ASSIGN21711100.00
CONT_ASSIGN21711100.00
CONT_ASSIGN21711100.00
CONT_ASSIGN21711100.00
CONT_ASSIGN21711100.00
CONT_ASSIGN22211100.00
CONT_ASSIGN22211100.00
CONT_ASSIGN22211100.00
CONT_ASSIGN22211100.00
CONT_ASSIGN22211100.00
CONT_ASSIGN22211100.00
CONT_ASSIGN22211100.00
CONT_ASSIGN22211100.00
CONT_ASSIGN22211100.00
CONT_ASSIGN22211100.00
CONT_ASSIGN22211100.00
CONT_ASSIGN225100.00
CONT_ASSIGN22511100.00
CONT_ASSIGN22511100.00
CONT_ASSIGN22511100.00
CONT_ASSIGN22511100.00
CONT_ASSIGN225100.00
CONT_ASSIGN22511100.00
CONT_ASSIGN225100.00
CONT_ASSIGN225100.00
CONT_ASSIGN225100.00
CONT_ASSIGN225100.00
CONT_ASSIGN22811100.00
CONT_ASSIGN22811100.00
CONT_ASSIGN22811100.00
CONT_ASSIGN22811100.00
CONT_ASSIGN22811100.00
CONT_ASSIGN22811100.00
CONT_ASSIGN22811100.00
CONT_ASSIGN22811100.00
CONT_ASSIGN22811100.00
CONT_ASSIGN22811100.00
CONT_ASSIGN22811100.00
CONT_ASSIGN23411100.00
ALWAYS24400
ALWAYS24433100.00
ALWAYS25200
ALWAYS25233100.00
CONT_ASSIGN26111100.00
CONT_ASSIGN26311100.00
CONT_ASSIGN31411100.00
ALWAYS33033100.00
ALWAYS34133100.00
ALWAYS3561111100.00
CONT_ASSIGN37611100.00
CONT_ASSIGN37611100.00
CONT_ASSIGN37611100.00
CONT_ASSIGN37611100.00
CONT_ASSIGN37711100.00
CONT_ASSIGN37711100.00
CONT_ASSIGN37711100.00
CONT_ASSIGN37711100.00
CONT_ASSIGN37811100.00
CONT_ASSIGN37811100.00
CONT_ASSIGN37811100.00
CONT_ASSIGN37811100.00
CONT_ASSIGN37911100.00
CONT_ASSIGN37911100.00
CONT_ASSIGN37911100.00
CONT_ASSIGN37911100.00
CONT_ASSIGN39100

185 always_comb begin 186 1/1 for (int i = 0; i < NumAlertEvents; i++) begin Tests: T171 T178 T77  187 1/1 event_vld[i] = alert_event_p[i] | ~alert_event_n[i]; Tests: T171 T178 T77  188 end 189 end 190 191 // Only recoverable alerts are ack'd. Fatal alerts are captured and continuously 192 // triggered, there is thus not a need to ever acknowledge the source. 193 // For recoverable alerts, the ack is only sent once the alert is captured into software readable 194 // registers 195 logic [NumAlertEvents-1:0] alert_en, alert_en_buf; 196 logic [NumAlertEvents-1:0] recov_event; 197 logic [NumAlertEvents-1:0] fatal_event; 198 199 prim_sec_anchor_buf #( 200 .Width(NumAlertEvents) 201 ) u_prim_sec_anchor_buf ( 202 .in_i(alert_en), 203 .out_o(alert_en_buf) 204 ); 205 206 for (genvar i = 0; i < NumAlertEvents; i++) begin : gen_ast_alert_events 207 208 // We're using the "loose" check so that alerts are only disabled iff they are equal to the 209 // false value. This ensures that even a value glitched to an incorrect encoding will enable 210 // the alert. 211 11/11 assign alert_en[i] = mubi4_test_true_loose(mubi4_t'(reg2hw.alert_en[i])); Tests: T171 T57 T381  | T171 T57 T381  | T171 T178 T57  | T171 T57 T381  | T171 T57 T381  | T171 T57 T381  | T171 T178 T57  | T171 T57 T381  | T171 T57 T381  | T171 T57 T381  | T171 T57 T381  212 213 // when there is a valid alert, set the alert state 214 11/11 assign recov_event[i] = alert_en_buf[i] && Tests: T171 T77 T185  | T171 T57 T381  | T171 T178 T57  | T171 T57 T381  | T171 T57 T381  | T171 T57 T381  | T171 T178 T57  | T171 T57 T381  | T171 T57 T381  | T171 T57 T381  | T171 T57 T381  215 event_vld[i] && 216 !reg2hw.fatal_alert_en[i]; 217 11/11 assign fatal_event[i] = alert_en_buf[i] && Tests: T171 T77 T185  | T171 T57 T381  | T171 T178 T57  | T171 T57 T381  | T171 T57 T381  | T171 T57 T381  | T171 T178 T57  | T171 T57 T381  | T171 T57 T381  | T171 T57 T381  | T171 T57 T381  218 event_vld[i] && 219 reg2hw.fatal_alert_en[i]; 220 221 assign hw2reg.recov_alert[i].d = 1'b1; 222 11/11 assign hw2reg.recov_alert[i].de = recov_event[i]; Tests: T171 T77 T185  | T171 T173 T174  | T171 T178 T173  | T171 T173 T174  | T171 T173 T182  | T171 T173 T174  | T171 T178 T173  | T171 T173 T147  | T171 T173 T147  | T171 T173 T174  | T171 T173 T174  223 224 assign hw2reg.fatal_alert[i].d = 1'b1; 225 5/11 ==> assign hw2reg.fatal_alert[i].de = fatal_event[i]; Tests: T175 T176  | T178  | T181  | T182 T175 T176  | T178  226 227 // only recoverable alerts ack 228 11/11 assign event_clr[i] = recov_event[i] & reg2hw.recov_alert[i].q; Tests: T171 T77 T185  | T171 T173 T174  | T171 T178 T173  | T171 T173 T174  | T171 T173 T182  | T171 T173 T174  | T171 T178 T173  | T171 T173 T147  | T171 T173 T147  | T171 T173 T174  | T171 T173 T174  229 end 230 231 // handle internal alert events, currently only have fatals 232 for (genvar i = NumAlertEvents; i < TotalEvents; i++) begin : gen_local_alert_events 233 assign hw2reg.fatal_alert[i].d = 1'b1; 234 1/1 assign hw2reg.fatal_alert[i].de = intg_err; Tests: T1 T2 T3  235 end 236 237 // Note, even though the incoming alerts are differential, they are NOT expected to be 238 // consistent all the time. It is more appropriate for sensor_ctrl to treat them as 239 // independent lines. 240 // As a result, the alert_ack is only applied if an incoming alert is set to the active polarity. 241 // 242 243 always_comb begin 244 1/1 for (int i = 0; i < NumAlertEvents; i++) begin Tests: T171 T178 T77  245 1/1 ast_alert_o.alerts_ack[i].p = alert_event_p[i] & event_clr[i]; Tests: T171 T178 T77  246 1/1 ast_alert_o.alerts_ack[i].n = ~(~alert_event_n[i] & event_clr[i]); Tests: T171 T178 T77  247 end 248 end 249 250 // alert trigger for test 251 always_comb begin 252 1/1 for (int i = 0; i < NumAlertEvents; i++) begin Tests: T171 T178 T77  253 1/1 ast_alert_o.alerts_trig[i].p = reg2hw.alert_trig[i]; Tests: T171 T178 T77  254 1/1 ast_alert_o.alerts_trig[i].n = ~reg2hw.alert_trig[i]; Tests: T171 T178 T77  255 end 256 end 257 258 259 // alert test connection 260 logic [NumAlerts-1:0] alert_test; 261 1/1 assign alert_test[RecovAlert] = reg2hw.alert_test.recov_alert.qe & Tests: T1 T2 T3  262 reg2hw.alert_test.recov_alert.q; 263 1/1 assign alert_test[FatalAlert] = reg2hw.alert_test.fatal_alert.qe & Tests: T1 T2 T3  264 reg2hw.alert_test.fatal_alert.q; 265 266 prim_alert_sender #( 267 .AsyncOn(AlertAsyncOn[RecovAlert]), 268 .IsFatal(0) 269 ) u_prim_recov_alert_sender ( 270 .clk_i, 271 .rst_ni, 272 .alert_test_i(alert_test[RecovAlert]), 273 .alert_req_i(|recov_event), 274 .alert_ack_o(), 275 .alert_state_o(), 276 .alert_rx_i(alert_rx_i[RecovAlert]), 277 .alert_tx_o(alert_tx_o[RecovAlert]) 278 ); 279 280 prim_alert_sender #( 281 .AsyncOn(AlertAsyncOn[FatalAlert]), 282 .IsFatal(1) 283 ) u_prim_fatal_alert_sender ( 284 .clk_i, 285 .rst_ni, 286 .alert_test_i(alert_test[FatalAlert]), 287 .alert_req_i(|reg2hw.fatal_alert), 288 .alert_ack_o(), 289 .alert_state_o(), 290 .alert_rx_i(alert_rx_i[FatalAlert]), 291 .alert_tx_o(alert_tx_o[FatalAlert]) 292 ); 293 294 /////////////////////////// 295 // wakeup generation 296 /////////////////////////// 297 298 // wakeups are synchronized separately from the normal event handling. 299 // The alert handling is not synchronized through these below because 300 // the ack latency would be very long for no apparent gain. 301 302 logic async_wake; 303 logic unstable_wake_req; 304 305 // async wake combines ast inputs as well as recoverable alerts. 306 // This is because it is possible for alert events to arrive "right" 307 // on the boundary of low power. In the event this happens, the 308 // original event is immediately 'acked', making it possible for the 309 // sync flops below to miss the event. By mixing in recov_alert, 310 // we guarantee that if the event is caught by the regfile, it can also 311 // be used to trigger wake from low power. 312 // Fatal alerts are not used here because they do not ever ack, meaning 313 // the originating event can never disappear. 314 1/1 assign async_wake = (|(async_alert_event_p & alert_en_buf)) | Tests: T171 T178 T77  315 (~&(async_alert_event_n | ~alert_en_buf)) | 316 (|reg2hw.recov_alert); 317 318 prim_flop_2sync #( 319 .Width(1), 320 .ResetValue('0) 321 ) u_wake_sync ( 322 .clk_i(clk_aon_i), 323 .rst_ni(rst_aon_ni), 324 .d_i(async_wake), 325 .q_o(unstable_wake_req) 326 ); 327 328 logic [2:0] wake_req_filter; 329 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 330 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  331 1/1 wake_req_filter <= '0; Tests: T1 T2 T3  332 end else begin 333 1/1 wake_req_filter <= {wake_req_filter[1:0], unstable_wake_req}; Tests: T1 T2 T3  334 end 335 end 336 337 // The filter is needed since the input is purely combinational 338 // among async events. The filter is thus used to ensure the 339 // wake indication is real and not a glitch. 340 always_ff @(posedge clk_aon_i or negedge rst_aon_ni) begin 341 1/1 if (!rst_aon_ni) begin Tests: T1 T2 T3  342 1/1 wkup_req_o <= '0; Tests: T1 T2 T3  343 end else begin 344 1/1 wkup_req_o <= &wake_req_filter; Tests: T1 T2 T3  345 end 346 end 347 348 /////////////////////////// 349 // Attributes for manual pads 350 /////////////////////////// 351 logic [NumAttrPads-1:0] manual_pad_pull_en_q, 352 manual_pad_pull_select_q, 353 manual_pad_input_disable_q; 354 355 always_ff @(posedge clk_i or negedge rst_ni) begin 356 1/1 if (!rst_ni) begin Tests: T1 T2 T3  357 1/1 manual_pad_pull_en_q <= '0; Tests: T1 T2 T3  358 1/1 manual_pad_pull_select_q <= '0; Tests: T1 T2 T3  359 1/1 manual_pad_input_disable_q <= '0; Tests: T1 T2 T3  360 end else begin 361 1/1 for (int kk = 0; kk < NumAttrPads; kk++) begin Tests: T1 T2 T3  362 1/1 if (reg2hw.manual_pad_attr[kk].pull_en.qe) begin Tests: T1 T2 T3  363 1/1 manual_pad_pull_en_q[kk] <= reg2hw.manual_pad_attr[kk].pull_en.q; Tests: T20 T21 T22  364 end MISSING_ELSE 365 1/1 if (reg2hw.manual_pad_attr[kk].pull_select.qe) begin Tests: T1 T2 T3  366 1/1 manual_pad_pull_select_q[kk] <= reg2hw.manual_pad_attr[kk].pull_select.q; Tests: T20 T21 T22  367 end MISSING_ELSE 368 1/1 if (reg2hw.manual_pad_attr[kk].input_disable.qe) begin Tests: T1 T2 T3  369 1/1 manual_pad_input_disable_q[kk] <= reg2hw.manual_pad_attr[kk].input_disable.q; Tests: T20 T21 T22  370 end MISSING_ELSE 371 end 372 end 373 end 374 375 for (genvar k = 0; k < NumAttrPads; k++) begin : gen_manual_pad_attr 376 4/4 assign hw2reg.manual_pad_attr[k].pull_en.d = manual_pad_pull_en_q[k]; Tests: T20 T21 T22  | T20 T21 T22  | T20 T21 T22  | T20 T21 T22  377 4/4 assign hw2reg.manual_pad_attr[k].pull_select.d = manual_pad_pull_select_q[k]; Tests: T20 T21 T22  | T20 T21 T22  | T20 T21 T22  | T20 T21 T22  378 4/4 assign hw2reg.manual_pad_attr[k].input_disable.d = manual_pad_input_disable_q[k]; Tests: T20 T21 T22  | T20 T21 T22  | T20 T21 T22  | T20 T21 T22  379 4/4 assign manual_pad_attr_o[k] = '{ Tests: T20 T21 T22  | T20 T21 T22  | T20 T21 T22  | T20 T21 T22  380 pull_en: manual_pad_pull_en_q[k], 381 pull_select: manual_pad_pull_select_q[k], 382 input_disable: manual_pad_input_disable_q[k], 383 default: '0 384 }; 385 end 386 387 /////////////////////////// 388 // pinmux feedthrough to ast 389 /////////////////////////// 390 391 unreachable assign cio_ast_debug_out_o = ast2pinmux_i;

Cond Coverage for Module : sensor_ctrl
TotalCoveredPercent
Conditions1008888.00
Logical1008888.00
Non-Logical00
Event00

 LINE       187
 EXPRESSION (alert_event_p[i] | ((~alert_event_n[i])))
             --------1-------   ----------2----------
-1--2-StatusTests
00CoveredT171,T178,T77
01Not Covered
10CoveredT185,T383,T384

 LINE       214
 EXPRESSION (alert_en_buf[0] && event_vld[0] && ((!reg2hw.fatal_alert_en[0])))
             -------1-------    ------2-----    --------------3--------------
-1--2--3-StatusTests
011CoveredT171,T173,T174
101CoveredT1,T2,T3
110Not Covered
111CoveredT171,T77,T185

 LINE       214
 EXPRESSION (alert_en_buf[1] && event_vld[1] && ((!reg2hw.fatal_alert_en[1])))
             -------1-------    ------2-----    --------------3--------------
-1--2--3-StatusTests
011CoveredT171,T173,T174
101CoveredT1,T2,T3
110CoveredT175,T176
111CoveredT171,T173,T174

 LINE       214
 EXPRESSION (alert_en_buf[2] && event_vld[2] && ((!reg2hw.fatal_alert_en[2])))
             -------1-------    ------2-----    --------------3--------------
-1--2--3-StatusTests
011CoveredT171,T178,T173
101CoveredT1,T2,T3
110CoveredT178
111CoveredT171,T178,T173

 LINE       214
 EXPRESSION (alert_en_buf[3] && event_vld[3] && ((!reg2hw.fatal_alert_en[3])))
             -------1-------    ------2-----    --------------3--------------
-1--2--3-StatusTests
011CoveredT171,T173,T174
101CoveredT1,T2,T3
110CoveredT181
111CoveredT171,T173,T174

 LINE       214
 EXPRESSION (alert_en_buf[4] && event_vld[4] && ((!reg2hw.fatal_alert_en[4])))
             -------1-------    ------2-----    --------------3--------------
-1--2--3-StatusTests
011CoveredT171,T173,T182
101CoveredT1,T2,T3
110CoveredT182,T175,T176
111CoveredT171,T173,T182

 LINE       214
 EXPRESSION (alert_en_buf[5] && event_vld[5] && ((!reg2hw.fatal_alert_en[5])))
             -------1-------    ------2-----    --------------3--------------
-1--2--3-StatusTests
011CoveredT171,T173,T174
101CoveredT1,T2,T3
110Not Covered
111CoveredT171,T173,T174

 LINE       214
 EXPRESSION (alert_en_buf[6] && event_vld[6] && ((!reg2hw.fatal_alert_en[6])))
             -------1-------    ------2-----    --------------3--------------
-1--2--3-StatusTests
011CoveredT171,T178,T173
101CoveredT1,T2,T3
110CoveredT178
111CoveredT171,T178,T173

 LINE       214
 EXPRESSION (alert_en_buf[7] && event_vld[7] && ((!reg2hw.fatal_alert_en[7])))
             -------1-------    ------2-----    --------------3--------------
-1--2--3-StatusTests
011CoveredT171,T173,T174
101CoveredT1,T2,T3
110Not Covered
111CoveredT171,T173,T147

 LINE       214
 EXPRESSION (alert_en_buf[8] && event_vld[8] && ((!reg2hw.fatal_alert_en[8])))
             -------1-------    ------2-----    --------------3--------------
-1--2--3-StatusTests
011CoveredT171,T173,T174
101CoveredT1,T2,T3
110Not Covered
111CoveredT171,T173,T147

 LINE       214
 EXPRESSION (alert_en_buf[9] && event_vld[9] && ((!reg2hw.fatal_alert_en[9])))
             -------1-------    ------2-----    --------------3--------------
-1--2--3-StatusTests
011CoveredT171,T173,T174
101CoveredT1,T2,T3
110Not Covered
111CoveredT171,T173,T174

 LINE       214
 EXPRESSION (alert_en_buf[10] && event_vld[10] && ((!reg2hw.fatal_alert_en[10])))
             --------1-------    ------2------    ---------------3--------------
-1--2--3-StatusTests
011CoveredT171,T173,T174
101CoveredT1,T2,T3
110Not Covered
111CoveredT171,T173,T174

 LINE       217
 EXPRESSION (alert_en_buf[0] && event_vld[0] && reg2hw.fatal_alert_en[0])
             -------1-------    ------2-----    ------------3-----------
-1--2--3-StatusTests
011Not Covered
101Not Covered
110CoveredT171,T77,T185
111Not Covered

 LINE       228
 EXPRESSION (recov_event[0] & reg2hw.recov_alert[0].q)
             -------1------   -----------2-----------
-1--2-StatusTests
01CoveredT171,T77,T185
10CoveredT171,T77,T185
11CoveredT171,T77,T185

 LINE       228
 EXPRESSION (recov_event[1] & reg2hw.recov_alert[1].q)
             -------1------   -----------2-----------
-1--2-StatusTests
01CoveredT171,T173,T174
10CoveredT171,T173,T174
11CoveredT171,T173,T174

 LINE       228
 EXPRESSION (recov_event[2] & reg2hw.recov_alert[2].q)
             -------1------   -----------2-----------
-1--2-StatusTests
01CoveredT171,T178,T173
10CoveredT171,T178,T173
11CoveredT171,T178,T173

 LINE       228
 EXPRESSION (recov_event[3] & reg2hw.recov_alert[3].q)
             -------1------   -----------2-----------
-1--2-StatusTests
01CoveredT171,T173,T174
10CoveredT171,T173,T174
11CoveredT171,T173,T174

 LINE       228
 EXPRESSION (recov_event[4] & reg2hw.recov_alert[4].q)
             -------1------   -----------2-----------
-1--2-StatusTests
01CoveredT171,T173,T182
10CoveredT171,T173,T182
11CoveredT171,T173,T182

 LINE       228
 EXPRESSION (recov_event[5] & reg2hw.recov_alert[5].q)
             -------1------   -----------2-----------
-1--2-StatusTests
01CoveredT171,T173,T174
10CoveredT171,T173,T174
11CoveredT171,T173,T174

 LINE       228
 EXPRESSION (recov_event[6] & reg2hw.recov_alert[6].q)
             -------1------   -----------2-----------
-1--2-StatusTests
01CoveredT171,T178,T173
10CoveredT171,T178,T173
11CoveredT171,T178,T173

 LINE       228
 EXPRESSION (recov_event[7] & reg2hw.recov_alert[7].q)
             -------1------   -----------2-----------
-1--2-StatusTests
01CoveredT171,T173,T147
10CoveredT171,T173,T147
11CoveredT171,T173,T147

 LINE       228
 EXPRESSION (recov_event[8] & reg2hw.recov_alert[8].q)
             -------1------   -----------2-----------
-1--2-StatusTests
01CoveredT171,T173,T147
10CoveredT171,T173,T147
11CoveredT171,T173,T147

 LINE       228
 EXPRESSION (recov_event[9] & reg2hw.recov_alert[9].q)
             -------1------   -----------2-----------
-1--2-StatusTests
01CoveredT171,T173,T174
10CoveredT171,T173,T174
11CoveredT171,T173,T174

 LINE       228
 EXPRESSION (recov_event[10] & reg2hw.recov_alert[10].q)
             -------1-------   ------------2-----------
-1--2-StatusTests
01CoveredT171,T173,T174
10CoveredT171,T173,T174
11CoveredT171,T173,T174

 LINE       245
 EXPRESSION (alert_event_p[i] & event_clr[i])
             --------1-------   ------2-----
-1--2-StatusTests
01Not Covered
10CoveredT171,T178,T77
11CoveredT171,T178,T77

 LINE       246
 SUB-EXPRESSION (((~alert_event_n[i])) & event_clr[i])
                 ----------1----------   ------2-----
-1--2-StatusTests
01CoveredT185,T383,T384
10CoveredT171,T178,T77
11CoveredT171,T178,T77

 LINE       261
 EXPRESSION (reg2hw.alert_test.recov_alert.qe & reg2hw.alert_test.recov_alert.q)
             ----------------1---------------   ---------------2---------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT80,T81,T82
11CoveredT80,T81,T82

 LINE       263
 EXPRESSION (reg2hw.alert_test.fatal_alert.qe & reg2hw.alert_test.fatal_alert.q)
             ----------------1---------------   ---------------2---------------
-1--2-StatusTests
01CoveredT1,T2,T3
10CoveredT80,T81,T82
11CoveredT80,T81,T82

 LINE       314
 EXPRESSION (((|(async_alert_event_p & alert_en_buf))) | ((~&(async_alert_event_n | (~alert_en_buf)))) | ((|reg2hw.recov_alert)))
             --------------------1--------------------   ----------------------2----------------------   -----------3-----------
-1--2--3-StatusTests
000CoveredT1,T2,T3
001CoveredT171,T178,T77
010Not Covered
100CoveredT185,T383,T384

Toggle Coverage for Module : sensor_ctrl
TotalCoveredPercent
Totals 148 107 72.30
Total Bits 568 454 79.93
Total Bits 0->1 284 227 79.93
Total Bits 1->0 284 227 79.93

Ports 148 107 72.30
Port Bits 568 454 79.93
Port Bits 0->1 284 227 79.93
Port Bits 1->0 284 227 79.93

Port Details
NameToggleToggle 1->0TestsToggle 0->1TestsDirection
clk_i Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
rst_ni Yes Yes T45,T39,T29 Yes T1,T2,T3 INPUT
clk_aon_i Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
rst_aon_ni Yes Yes T45,T39,T29 Yes T1,T2,T3 INPUT
tl_i.d_ready Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
tl_i.a_user.data_intg[6:0] Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
tl_i.a_user.cmd_intg[6:0] Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
tl_i.a_user.instr_type[0] Yes Yes *T1,*T2,*T3 Yes T1,T2,T3 INPUT
tl_i.a_user.instr_type[2:1] No No No INPUT
tl_i.a_user.instr_type[3] Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
tl_i.a_user.rsvd[4:0] Unreachable Unreachable Unreachable INPUT
tl_i.a_data[31:0] Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
tl_i.a_mask[3:0] Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
tl_i.a_address[1:0] No No No INPUT
tl_i.a_address[6:2] Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
tl_i.a_address[15:7] Unreachable Unreachable Unreachable INPUT
tl_i.a_address[16] Yes Yes *T1,*T2,*T3 Yes T1,T2,T3 INPUT
tl_i.a_address[18:17] Unreachable Unreachable Unreachable INPUT
tl_i.a_address[19] Yes Yes *T1,*T2,*T3 Yes T1,T2,T3 INPUT
tl_i.a_address[21:20] Unreachable Unreachable Unreachable INPUT
tl_i.a_address[22] Yes Yes *T1,*T2,*T3 Yes T1,T2,T3 INPUT
tl_i.a_address[29:23] Unreachable Unreachable Unreachable INPUT
tl_i.a_address[30] Yes Yes *T1,*T2,*T3 Yes T1,T2,T3 INPUT
tl_i.a_address[31] Unreachable Unreachable Unreachable INPUT
tl_i.a_source[5:0] Yes Yes *T99,*T38,*T100 Yes T99,T38,T100 INPUT
tl_i.a_source[7:6] Unreachable Unreachable Unreachable INPUT
tl_i.a_size[1:0] Yes Yes T20,T21,T22 Yes T20,T21,T22 INPUT
tl_i.a_param[2:0] Unreachable Unreachable Unreachable INPUT
tl_i.a_opcode[0] Yes Yes *T38,*T101,*T102 Yes T38,T101,T102 INPUT
tl_i.a_opcode[1] No No No INPUT
tl_i.a_opcode[2] Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
tl_i.a_valid Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
tl_o.a_ready Yes Yes T1,T2,T3 Yes T1,T2,T3 OUTPUT
tl_o.d_error No No No OUTPUT
tl_o.d_user.data_intg[6:0] Yes Yes T186,T171,T131 Yes T186,T171,T131 OUTPUT
tl_o.d_user.rsp_intg[1:0] Yes Yes T186,T171,T131 Yes T80,T186,T171 OUTPUT
tl_o.d_user.rsp_intg[2] No No No OUTPUT
tl_o.d_user.rsp_intg[5:3] Yes Yes *T20,*T21,*T22 Yes T20,T21,T22 OUTPUT
tl_o.d_user.rsp_intg[6] No No No OUTPUT
tl_o.d_data[31:0] Yes Yes T45,T39,T46 Yes T1,T2,T3 OUTPUT
tl_o.d_sink No No No OUTPUT
tl_o.d_source[0] No No No OUTPUT
tl_o.d_source[5:1] Yes Yes *T45,*T39,*T46 Yes T1,T2,T3 OUTPUT
tl_o.d_source[7:6] Unreachable Unreachable Unreachable OUTPUT
tl_o.d_size[1:0] Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
tl_o.d_param[2:0] Unreachable Unreachable Unreachable OUTPUT
tl_o.d_opcode[0] Yes Yes *T45,*T39,*T46 Yes T1,T2,T3 OUTPUT
tl_o.d_opcode[2:1] Unreachable Unreachable Unreachable OUTPUT
tl_o.d_valid Yes Yes T1,T2,T3 Yes T1,T2,T3 OUTPUT
ast_alert_i.alerts[0].n Yes Yes T171,T77,T172 Yes T77,T172,T79 INPUT
ast_alert_i.alerts[0].p Yes Yes T77,T185,T172 Yes T171,T77,T185 INPUT
ast_alert_i.alerts[1].n Yes Yes T171,T173,T174 Yes T175,T176 INPUT
ast_alert_i.alerts[1].p Yes Yes T175,T176 Yes T171,T173,T174 INPUT
ast_alert_i.alerts[2].n Yes Yes T171,T178,T173 Yes T178 INPUT
ast_alert_i.alerts[2].p Yes Yes T178 Yes T171,T178,T173 INPUT
ast_alert_i.alerts[3].n Yes Yes T171,T173,T174 Yes T181 INPUT
ast_alert_i.alerts[3].p Yes Yes T181 Yes T171,T173,T174 INPUT
ast_alert_i.alerts[4].n Yes Yes T171,T173,T182 Yes T182,T175,T176 INPUT
ast_alert_i.alerts[4].p Yes Yes T182,T175,T176 Yes T171,T173,T182 INPUT
ast_alert_i.alerts[5].n No Yes T171,T173,T174 No INPUT
ast_alert_i.alerts[5].p No No Yes T171,T173,T174 INPUT
ast_alert_i.alerts[6].n Yes Yes T171,T178,T173 Yes T178 INPUT
ast_alert_i.alerts[6].p Yes Yes T178 Yes T171,T178,T173 INPUT
ast_alert_i.alerts[7].n Yes Yes T171,T173,T147 Yes T147 INPUT
ast_alert_i.alerts[7].p Yes Yes T147 Yes T171,T173,T147 INPUT
ast_alert_i.alerts[8].n Yes Yes T171,T173,T147 Yes T147 INPUT
ast_alert_i.alerts[8].p Yes Yes T147 Yes T171,T173,T147 INPUT
ast_alert_i.alerts[9].n No Yes T171,T173,T174 No INPUT
ast_alert_i.alerts[9].p No No Yes T171,T173,T174 INPUT
ast_alert_i.alerts[10].n No Yes T171,T173,T174 No INPUT
ast_alert_i.alerts[10].p No No Yes T171,T173,T174 INPUT
ast_alert_o.alerts_trig[0].n Yes Yes T171,T77,T172 Yes T171,T77,T172 OUTPUT
ast_alert_o.alerts_trig[0].p Yes Yes T171,T77,T172 Yes T171,T77,T172 OUTPUT
ast_alert_o.alerts_trig[1].n Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_trig[1].p Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_trig[2].n Yes Yes T171,T178,T173 Yes T171,T178,T173 OUTPUT
ast_alert_o.alerts_trig[2].p Yes Yes T171,T178,T173 Yes T171,T178,T173 OUTPUT
ast_alert_o.alerts_trig[3].n Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_trig[3].p Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_trig[4].n Yes Yes T171,T173,T182 Yes T171,T173,T182 OUTPUT
ast_alert_o.alerts_trig[4].p Yes Yes T171,T173,T182 Yes T171,T173,T182 OUTPUT
ast_alert_o.alerts_trig[5].n Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_trig[5].p Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_trig[6].n Yes Yes T171,T178,T173 Yes T171,T178,T173 OUTPUT
ast_alert_o.alerts_trig[6].p Yes Yes T171,T178,T173 Yes T171,T178,T173 OUTPUT
ast_alert_o.alerts_trig[7].n Yes Yes T171,T173,T147 Yes T171,T173,T147 OUTPUT
ast_alert_o.alerts_trig[7].p Yes Yes T171,T173,T147 Yes T171,T173,T147 OUTPUT
ast_alert_o.alerts_trig[8].n Yes Yes T171,T173,T147 Yes T171,T173,T147 OUTPUT
ast_alert_o.alerts_trig[8].p Yes Yes T171,T173,T147 Yes T171,T173,T147 OUTPUT
ast_alert_o.alerts_trig[9].n Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_trig[9].p Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_trig[10].n Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_trig[10].p Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_ack[0].n Yes Yes T171,T77,T172 Yes T171,T77,T172 OUTPUT
ast_alert_o.alerts_ack[0].p Yes Yes T171,T77,T185 Yes T171,T77,T185 OUTPUT
ast_alert_o.alerts_ack[1].n Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_ack[1].p Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_ack[2].n Yes Yes T171,T178,T173 Yes T171,T178,T173 OUTPUT
ast_alert_o.alerts_ack[2].p Yes Yes T171,T178,T173 Yes T171,T178,T173 OUTPUT
ast_alert_o.alerts_ack[3].n Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_ack[3].p Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_ack[4].n Yes Yes T171,T173,T182 Yes T171,T173,T182 OUTPUT
ast_alert_o.alerts_ack[4].p Yes Yes T171,T173,T182 Yes T171,T173,T182 OUTPUT
ast_alert_o.alerts_ack[5].n Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_ack[5].p Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_ack[6].n Yes Yes T171,T178,T173 Yes T171,T178,T173 OUTPUT
ast_alert_o.alerts_ack[6].p Yes Yes T171,T178,T173 Yes T171,T178,T173 OUTPUT
ast_alert_o.alerts_ack[7].n Yes Yes T171,T173,T147 Yes T171,T173,T147 OUTPUT
ast_alert_o.alerts_ack[7].p Yes Yes T171,T173,T147 Yes T171,T173,T147 OUTPUT
ast_alert_o.alerts_ack[8].n Yes Yes T171,T173,T147 Yes T171,T173,T147 OUTPUT
ast_alert_o.alerts_ack[8].p Yes Yes T171,T173,T147 Yes T171,T173,T147 OUTPUT
ast_alert_o.alerts_ack[9].n Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_ack[9].p Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_ack[10].n Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_alert_o.alerts_ack[10].p Yes Yes T171,T173,T174 Yes T171,T173,T174 OUTPUT
ast_status_i.io_pok[1:0] Yes Yes T170,T186,T187 Yes T1,T2,T3 INPUT
ast2pinmux_i[8:0] Unreachable Unreachable Unreachable INPUT
ast_init_done_i[3:0] Yes Yes T1,T2,T3 Yes T45,T39,T46 INPUT
cio_ast_debug_out_o[8:0] Unreachable Unreachable Unreachable OUTPUT
cio_ast_debug_out_en_o[8:0] Unreachable Unreachable Unreachable OUTPUT
intr_io_status_change_o Yes Yes T186,T131,T272 Yes T186,T131,T272 OUTPUT
intr_init_status_change_o Yes Yes T131,T196,T197 Yes T131,T196,T197 OUTPUT
alert_rx_i[0].ack_n Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
alert_rx_i[0].ack_p Yes Yes T80,T104,T171 Yes T80,T104,T171 INPUT
alert_rx_i[0].ping_n Yes Yes T104,T105,T106 Yes T104,T105,T106 INPUT
alert_rx_i[0].ping_p Yes Yes T104,T105,T106 Yes T104,T105,T106 INPUT
alert_rx_i[1].ack_n Yes Yes T1,T2,T3 Yes T1,T2,T3 INPUT
alert_rx_i[1].ack_p Yes Yes T80,T104,T105 Yes T80,T104,T105 INPUT
alert_rx_i[1].ping_n Yes Yes T104,T105,T106 Yes T104,T105,T106 INPUT
alert_rx_i[1].ping_p Yes Yes T104,T105,T106 Yes T104,T105,T106 INPUT
alert_tx_o[0].alert_n Yes Yes T1,T2,T3 Yes T1,T2,T3 OUTPUT
alert_tx_o[0].alert_p Yes Yes T80,T104,T171 Yes T80,T104,T171 OUTPUT
alert_tx_o[1].alert_n Yes Yes T1,T2,T3 Yes T1,T2,T3 OUTPUT
alert_tx_o[1].alert_p Yes Yes T80,T104,T105 Yes T80,T104,T105 OUTPUT
wkup_req_o Yes Yes T171,T178,T77 Yes T171,T178,T77 OUTPUT
manual_pad_attr_o[0].invert No No No OUTPUT
manual_pad_attr_o[0].virt_od_en No No No OUTPUT
manual_pad_attr_o[0].pull_en Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[0].pull_select Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[0].keep_en No No No OUTPUT
manual_pad_attr_o[0].schmitt_en No No No OUTPUT
manual_pad_attr_o[0].od_en No No No OUTPUT
manual_pad_attr_o[0].input_disable Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[0].slew_rate[1:0] No No No OUTPUT
manual_pad_attr_o[0].drive_strength[3:0] No No No OUTPUT
manual_pad_attr_o[1].invert No No No OUTPUT
manual_pad_attr_o[1].virt_od_en No No No OUTPUT
manual_pad_attr_o[1].pull_en Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[1].pull_select Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[1].keep_en No No No OUTPUT
manual_pad_attr_o[1].schmitt_en No No No OUTPUT
manual_pad_attr_o[1].od_en No No No OUTPUT
manual_pad_attr_o[1].input_disable Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[1].slew_rate[1:0] No No No OUTPUT
manual_pad_attr_o[1].drive_strength[3:0] No No No OUTPUT
manual_pad_attr_o[2].invert No No No OUTPUT
manual_pad_attr_o[2].virt_od_en No No No OUTPUT
manual_pad_attr_o[2].pull_en Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[2].pull_select Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[2].keep_en No No No OUTPUT
manual_pad_attr_o[2].schmitt_en No No No OUTPUT
manual_pad_attr_o[2].od_en No No No OUTPUT
manual_pad_attr_o[2].input_disable Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[2].slew_rate[1:0] No No No OUTPUT
manual_pad_attr_o[2].drive_strength[3:0] No No No OUTPUT
manual_pad_attr_o[3].invert No No No OUTPUT
manual_pad_attr_o[3].virt_od_en No No No OUTPUT
manual_pad_attr_o[3].pull_en Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[3].pull_select Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[3].keep_en No No No OUTPUT
manual_pad_attr_o[3].schmitt_en No No No OUTPUT
manual_pad_attr_o[3].od_en No No No OUTPUT
manual_pad_attr_o[3].input_disable Yes Yes T20,T21,T22 Yes T20,T21,T22 OUTPUT
manual_pad_attr_o[3].slew_rate[1:0] No No No OUTPUT
manual_pad_attr_o[3].drive_strength[3:0] No No No OUTPUT

*Tests covering at least one bit in the range

Branch Coverage for Module : sensor_ctrl
Line No.TotalCoveredPercent
Branches 6 6 100.00
IF 330 2 2 100.00
IF 341 2 2 100.00
IF 356 2 2 100.00


330 if (!rst_aon_ni) begin -1- 331 wake_req_filter <= '0; ==> 332 end else begin 333 wake_req_filter <= {wake_req_filter[1:0], unstable_wake_req}; ==>

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


341 if (!rst_aon_ni) begin -1- 342 wkup_req_o <= '0; ==> 343 end else begin 344 wkup_req_o <= &wake_req_filter; ==>

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


356 if (!rst_ni) begin -1- 357 manual_pad_pull_en_q <= '0; ==> 358 manual_pad_pull_select_q <= '0; 359 manual_pad_input_disable_q <= '0; 360 end else begin 361 for (int kk = 0; kk < NumAttrPads; kk++) begin ==>

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


Assert Coverage for Module : sensor_ctrl
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
FpvSecCmRegWeOnehotCheck_A 123052014 8 0 0
NumAlertsMatch_A 1016 1016 0 0


FpvSecCmRegWeOnehotCheck_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 123052014 8 0 0
T205 62210 0 0 0
T378 36884 1 0 0
T379 0 1 0 0
T380 0 1 0 0
T385 0 1 0 0
T386 0 1 0 0
T387 0 1 0 0
T388 0 1 0 0
T389 0 1 0 0
T390 38141 0 0 0
T391 117011 0 0 0
T392 31032 0 0 0
T393 34477 0 0 0
T394 36171 0 0 0
T395 35758 0 0 0
T396 266447 0 0 0
T397 57765 0 0 0

NumAlertsMatch_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 1016 1016 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
T7 1 1 0 0
T9 1 1 0 0
T25 1 1 0 0
T107 1 1 0 0

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