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

Module : gpio
SCORELINECONDTOGGLEFSMBRANCHASSERT
100.00 100.00 100.00 100.00 100.00 100.00

Source File(s) :
/workspaces/repo/scratch/os_regression_2024_09_03/gpio-sim-vcs/default/sim-vcs/../src/lowrisc_ip_gpio_0.1/rtl/gpio.sv

Module self-instances :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
tb.dut 100.00 100.00 100.00 100.00 100.00 100.00



Module Instance : tb.dut

Instance :
SCORELINECONDTOGGLEFSMBRANCHASSERT
100.00 100.00 100.00 100.00 100.00 100.00


Instance's subtree :
SCORELINECONDTOGGLEFSMBRANCHASSERT
99.56 99.06 99.24 100.00 99.80 99.68


Parent :
SCORELINECONDTOGGLEFSMBRANCHASSERTNAME
tb


Subtrees :
NAMESCORELINECONDTOGGLEFSMBRANCHASSERT
gen_alert_tx[0].u_prim_alert_sender 100.00 100.00
gen_filter[0].u_filter 100.00 100.00 100.00 100.00
gen_filter[10].u_filter 100.00 100.00 100.00 100.00
gen_filter[11].u_filter 100.00 100.00 100.00 100.00
gen_filter[12].u_filter 100.00 100.00 100.00 100.00
gen_filter[13].u_filter 100.00 100.00 100.00 100.00
gen_filter[14].u_filter 100.00 100.00 100.00 100.00
gen_filter[15].u_filter 100.00 100.00 100.00 100.00
gen_filter[16].u_filter 100.00 100.00 100.00 100.00
gen_filter[17].u_filter 100.00 100.00 100.00 100.00
gen_filter[18].u_filter 100.00 100.00 100.00 100.00
gen_filter[19].u_filter 100.00 100.00 100.00 100.00
gen_filter[1].u_filter 100.00 100.00 100.00 100.00
gen_filter[20].u_filter 100.00 100.00 100.00 100.00
gen_filter[21].u_filter 100.00 100.00 100.00 100.00
gen_filter[22].u_filter 100.00 100.00 100.00 100.00
gen_filter[23].u_filter 100.00 100.00 100.00 100.00
gen_filter[24].u_filter 100.00 100.00 100.00 100.00
gen_filter[25].u_filter 100.00 100.00 100.00 100.00
gen_filter[26].u_filter 100.00 100.00 100.00 100.00
gen_filter[27].u_filter 100.00 100.00 100.00 100.00
gen_filter[28].u_filter 100.00 100.00 100.00 100.00
gen_filter[29].u_filter 100.00 100.00 100.00 100.00
gen_filter[2].u_filter 100.00 100.00 100.00 100.00
gen_filter[30].u_filter 100.00 100.00 100.00 100.00
gen_filter[31].u_filter 100.00 100.00 100.00 100.00
gen_filter[3].u_filter 100.00 100.00 100.00 100.00
gen_filter[4].u_filter 100.00 100.00 100.00 100.00
gen_filter[5].u_filter 100.00 100.00 100.00 100.00
gen_filter[6].u_filter 100.00 100.00 100.00 100.00
gen_filter[7].u_filter 100.00 100.00 100.00 100.00
gen_filter[8].u_filter 100.00 100.00 100.00 100.00
gen_filter[9].u_filter 100.00 100.00 100.00 100.00
gpio_csr_assert 85.71 85.71
intr_hw 100.00 100.00 100.00 100.00
tlul_assert_device 100.00 100.00 100.00 100.00
u_reg 99.03 97.69 98.53 100.00 98.95 100.00


Since this is the module's only instance, the coverage report is the same as for the module.
Line Coverage for Module : gpio
Line No.TotalCoveredPercent
TOTAL3232100.00
CONT_ASSIGN6311100.00
CONT_ASSIGN6611100.00
CONT_ASSIGN6711100.00
CONT_ASSIGN6911100.00
CONT_ASSIGN7011100.00
CONT_ASSIGN7211100.00
ALWAYS7688100.00
CONT_ASSIGN9211100.00
CONT_ASSIGN9311100.00
CONT_ASSIGN9511100.00
ALWAYS9988100.00
ALWAYS11611100.00
CONT_ASSIGN13711100.00
CONT_ASSIGN13811100.00
CONT_ASSIGN13911100.00
CONT_ASSIGN14011100.00
CONT_ASSIGN14211100.00
CONT_ASSIGN14911100.00

62 assign hw2reg.data_in.de = 1'b1; 63 1/1 assign hw2reg.data_in.d = data_in_d; Tests: T33 T34 T35  64 65 // GPIO_OUT 66 1/1 assign cio_gpio_o = cio_gpio_q; Tests: T33 T34 T35  67 1/1 assign cio_gpio_en_o = cio_gpio_en_q; Tests: T33 T34 T35  68 69 1/1 assign hw2reg.direct_out.d = cio_gpio_q; Tests: T33 T34 T35  70 1/1 assign hw2reg.masked_out_upper.data.d = cio_gpio_q[31:16]; Tests: T33 T34 T35  71 assign hw2reg.masked_out_upper.mask.d = 16'h 0; 72 1/1 assign hw2reg.masked_out_lower.data.d = cio_gpio_q[15:0]; Tests: T33 T34 T35  73 assign hw2reg.masked_out_lower.mask.d = 16'h 0; 74 75 always_ff @(posedge clk_i or negedge rst_ni) begin 76 1/1 if (!rst_ni) begin Tests: T33 T34 T35  77 1/1 cio_gpio_q <= '0; Tests: T33 T34 T35  78 1/1 end else if (reg2hw.direct_out.qe) begin Tests: T33 T34 T35  79 1/1 cio_gpio_q <= reg2hw.direct_out.q; Tests: T33 T34 T35  80 1/1 end else if (reg2hw.masked_out_upper.data.qe) begin Tests: T33 T34 T35  81 1/1 cio_gpio_q[31:16] <= Tests: T35 T36 T37  82 ( reg2hw.masked_out_upper.mask.q & reg2hw.masked_out_upper.data.q) | 83 (~reg2hw.masked_out_upper.mask.q & cio_gpio_q[31:16]); 84 1/1 end else if (reg2hw.masked_out_lower.data.qe) begin Tests: T33 T34 T35  85 1/1 cio_gpio_q[15:0] <= Tests: T35 T36 T37  86 ( reg2hw.masked_out_lower.mask.q & reg2hw.masked_out_lower.data.q) | 87 (~reg2hw.masked_out_lower.mask.q & cio_gpio_q[15:0]); 88 end MISSING_ELSE 89 end 90 91 // GPIO OE 92 1/1 assign hw2reg.direct_oe.d = cio_gpio_en_q; Tests: T33 T34 T35  93 1/1 assign hw2reg.masked_oe_upper.data.d = cio_gpio_en_q[31:16]; Tests: T33 T34 T35  94 assign hw2reg.masked_oe_upper.mask.d = 16'h 0; 95 1/1 assign hw2reg.masked_oe_lower.data.d = cio_gpio_en_q[15:0]; Tests: T33 T34 T35  96 assign hw2reg.masked_oe_lower.mask.d = 16'h 0; 97 98 always_ff @(posedge clk_i or negedge rst_ni) begin 99 1/1 if (!rst_ni) begin Tests: T33 T34 T35  100 1/1 cio_gpio_en_q <= '0; Tests: T33 T34 T35  101 1/1 end else if (reg2hw.direct_oe.qe) begin Tests: T33 T34 T35  102 1/1 cio_gpio_en_q <= reg2hw.direct_oe.q; Tests: T33 T34 T35  103 1/1 end else if (reg2hw.masked_oe_upper.data.qe) begin Tests: T33 T34 T35  104 1/1 cio_gpio_en_q[31:16] <= Tests: T35 T36 T37  105 ( reg2hw.masked_oe_upper.mask.q & reg2hw.masked_oe_upper.data.q) | 106 (~reg2hw.masked_oe_upper.mask.q & cio_gpio_en_q[31:16]); 107 1/1 end else if (reg2hw.masked_oe_lower.data.qe) begin Tests: T33 T34 T35  108 1/1 cio_gpio_en_q[15:0] <= Tests: T35 T36 T37  109 ( reg2hw.masked_oe_lower.mask.q & reg2hw.masked_oe_lower.data.q) | 110 (~reg2hw.masked_oe_lower.mask.q & cio_gpio_en_q[15:0]); 111 end MISSING_ELSE 112 end 113 114 logic [31:0] data_in_q; 115 always_ff @(posedge clk_i) begin 116 1/1 data_in_q <= data_in_d; Tests: T33 T34 T35  117 end 118 119 logic [31:0] event_intr_rise, event_intr_fall, event_intr_actlow, event_intr_acthigh; 120 logic [31:0] event_intr_combined; 121 122 // instantiate interrupt hardware primitive 123 prim_intr_hw #(.Width(32)) intr_hw ( 124 .clk_i, 125 .rst_ni, 126 .event_intr_i (event_intr_combined), 127 .reg2hw_intr_enable_q_i (reg2hw.intr_enable.q), 128 .reg2hw_intr_test_q_i (reg2hw.intr_test.q), 129 .reg2hw_intr_test_qe_i (reg2hw.intr_test.qe), 130 .reg2hw_intr_state_q_i (reg2hw.intr_state.q), 131 .hw2reg_intr_state_de_o (hw2reg.intr_state.de), 132 .hw2reg_intr_state_d_o (hw2reg.intr_state.d), 133 .intr_o (intr_gpio_o) 134 ); 135 136 // detect four possible individual interrupts 137 1/1 assign event_intr_rise = (~data_in_q & data_in_d) & reg2hw.intr_ctrl_en_rising.q; Tests: T33 T34 T35  138 1/1 assign event_intr_fall = ( data_in_q & ~data_in_d) & reg2hw.intr_ctrl_en_falling.q; Tests: T33 T34 T35  139 1/1 assign event_intr_acthigh = data_in_d & reg2hw.intr_ctrl_en_lvlhigh.q; Tests: T33 T34 T35  140 1/1 assign event_intr_actlow = ~data_in_d & reg2hw.intr_ctrl_en_lvllow.q; Tests: T33 T34 T35  141 142 1/1 assign event_intr_combined = event_intr_rise | Tests: T33 T34 T35  143 event_intr_fall | 144 event_intr_actlow | 145 event_intr_acthigh; 146 147 // Alerts 148 logic [NumAlerts-1:0] alert_test, alerts; 149 1/1 assign alert_test = { Tests: T33 T34 T35 

Cond Coverage for Module : gpio
TotalCoveredPercent
Conditions33100.00
Logical33100.00
Non-Logical00
Event00

 LINE       149
 SUB-EXPRESSION (reg2hw.alert_test.q & reg2hw.alert_test.qe)
                 ---------1---------   ----------2---------
-1--2-StatusTests
01CoveredT24,T54,T55
10CoveredT33,T34,T35
11CoveredT24,T54,T55

Toggle Coverage for Module : gpio
TotalCoveredPercent
Totals 30 30 100.00
Total Bits 588 588 100.00
Total Bits 0->1 294 294 100.00
Total Bits 1->0 294 294 100.00

Ports 30 30 100.00
Port Bits 588 588 100.00
Port Bits 0->1 294 294 100.00
Port Bits 1->0 294 294 100.00

Port Details
NameToggleToggle 1->0TestsToggle 0->1TestsDirection
clk_i Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
rst_ni Yes Yes T22,T23,T53 Yes T33,T34,T35 INPUT
tl_i.d_ready Yes Yes T34,T35,T37 Yes T33,T34,T35 INPUT
tl_i.a_user.data_intg[6:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
tl_i.a_user.cmd_intg[6:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
tl_i.a_user.instr_type[3:0] Yes Yes T34,T37,T40 Yes T34,T37,T40 INPUT
tl_i.a_user.rsvd[4:0] Unreachable Unreachable Unreachable INPUT
tl_i.a_data[31:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
tl_i.a_mask[3:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
tl_i.a_address[31:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
tl_i.a_source[7:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
tl_i.a_size[1:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
tl_i.a_param[2:0] Unreachable Unreachable Unreachable INPUT
tl_i.a_opcode[2:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
tl_i.a_valid Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
tl_o.a_ready Yes Yes T33,T34,T35 Yes T33,T34,T35 OUTPUT
tl_o.d_error Yes Yes T45,T46,T47 Yes T45,T46,T47 OUTPUT
tl_o.d_user.data_intg[6:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 OUTPUT
tl_o.d_user.rsp_intg[5:0] Yes Yes *T33,*T34,*T35 Yes T33,T34,T35 OUTPUT
tl_o.d_user.rsp_intg[6] Unreachable Unreachable Unreachable OUTPUT
tl_o.d_data[31:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 OUTPUT
tl_o.d_sink Unreachable Unreachable Unreachable OUTPUT
tl_o.d_source[7:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 OUTPUT
tl_o.d_size[1:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 OUTPUT
tl_o.d_param[2:0] Unreachable Unreachable Unreachable OUTPUT
tl_o.d_opcode[0] Yes Yes *T33,*T34,*T35 Yes T33,T34,T35 OUTPUT
tl_o.d_opcode[2:1] Unreachable Unreachable Unreachable OUTPUT
tl_o.d_valid Yes Yes T33,T34,T35 Yes T33,T34,T35 OUTPUT
intr_gpio_o[31:0] Yes Yes T38,T39,T40 Yes T38,T39,T40 OUTPUT
alert_rx_i[0].ack_n Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
alert_rx_i[0].ack_p Yes Yes T23,T24,T54 Yes T23,T24,T54 INPUT
alert_rx_i[0].ping_n Unreachable Unreachable Unreachable INPUT
alert_rx_i[0].ping_p Unreachable Unreachable Unreachable INPUT
alert_tx_o[0].alert_n Yes Yes T33,T34,T35 Yes T33,T34,T35 OUTPUT
alert_tx_o[0].alert_p Yes Yes T23,T24,T54 Yes T23,T24,T54 OUTPUT
cio_gpio_i[31:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 INPUT
cio_gpio_o[31:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 OUTPUT
cio_gpio_en_o[31:0] Yes Yes T33,T34,T35 Yes T33,T34,T35 OUTPUT

*Tests covering at least one bit in the range

Branch Coverage for Module : gpio
Line No.TotalCoveredPercent
Branches 10 10 100.00
IF 76 5 5 100.00
IF 99 5 5 100.00


76 if (!rst_ni) begin -1- 77 cio_gpio_q <= '0; ==> 78 end else if (reg2hw.direct_out.qe) begin -2- 79 cio_gpio_q <= reg2hw.direct_out.q; ==> 80 end else if (reg2hw.masked_out_upper.data.qe) begin -3- 81 cio_gpio_q[31:16] <= ==> 82 ( reg2hw.masked_out_upper.mask.q & reg2hw.masked_out_upper.data.q) | 83 (~reg2hw.masked_out_upper.mask.q & cio_gpio_q[31:16]); 84 end else if (reg2hw.masked_out_lower.data.qe) begin -4- 85 cio_gpio_q[15:0] <= ==> 86 ( reg2hw.masked_out_lower.mask.q & reg2hw.masked_out_lower.data.q) | 87 (~reg2hw.masked_out_lower.mask.q & cio_gpio_q[15:0]); 88 end MISSING_ELSE ==>

Branches:
-1--2--3--4-StatusTests
1 - - - Covered T33,T34,T35
0 1 - - Covered T33,T34,T35
0 0 1 - Covered T35,T36,T37
0 0 0 1 Covered T35,T36,T37
0 0 0 0 Covered T33,T34,T35


99 if (!rst_ni) begin -1- 100 cio_gpio_en_q <= '0; ==> 101 end else if (reg2hw.direct_oe.qe) begin -2- 102 cio_gpio_en_q <= reg2hw.direct_oe.q; ==> 103 end else if (reg2hw.masked_oe_upper.data.qe) begin -3- 104 cio_gpio_en_q[31:16] <= ==> 105 ( reg2hw.masked_oe_upper.mask.q & reg2hw.masked_oe_upper.data.q) | 106 (~reg2hw.masked_oe_upper.mask.q & cio_gpio_en_q[31:16]); 107 end else if (reg2hw.masked_oe_lower.data.qe) begin -4- 108 cio_gpio_en_q[15:0] <= ==> 109 ( reg2hw.masked_oe_lower.mask.q & reg2hw.masked_oe_lower.data.q) | 110 (~reg2hw.masked_oe_lower.mask.q & cio_gpio_en_q[15:0]); 111 end MISSING_ELSE ==>

Branches:
-1--2--3--4-StatusTests
1 - - - Covered T33,T34,T35
0 1 - - Covered T33,T34,T35
0 0 1 - Covered T35,T36,T37
0 0 0 1 Covered T35,T36,T37
0 0 0 0 Covered T33,T34,T35


Assert Coverage for Module : gpio
TotalAttemptedPercentSucceeded/MatchedPercent
Assertions 5 5 100.00 5 100.00
Cover properties 0 0 0
Cover sequences 0 0 0
Total 5 5 100.00 5 100.00




Assertion Details

NameAttemptsReal SuccessesFailuresIncomplete
AlertsKnown_A 41710801 41388749 0 0
CioGpioEnOKnown 41710801 41388749 0 0
CioGpioOKnown 41710801 41388749 0 0
FpvSecCmRegWeOnehotCheck_A 41710801 120 0 0
IntrGpioKnown 41710801 41388749 0 0


AlertsKnown_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 41710801 41388749 0 0
T22 6433 5034 0 0
T33 2870 2788 0 0
T34 7634 7557 0 0
T35 5820 5757 0 0
T36 3255 3183 0 0
T37 1842 1757 0 0
T38 3234 3162 0 0
T39 3068 2985 0 0
T40 11899 11803 0 0
T41 6883 6814 0 0

CioGpioEnOKnown
NameAttemptsReal SuccessesFailuresIncomplete
Total 41710801 41388749 0 0
T22 6433 5034 0 0
T33 2870 2788 0 0
T34 7634 7557 0 0
T35 5820 5757 0 0
T36 3255 3183 0 0
T37 1842 1757 0 0
T38 3234 3162 0 0
T39 3068 2985 0 0
T40 11899 11803 0 0
T41 6883 6814 0 0

CioGpioOKnown
NameAttemptsReal SuccessesFailuresIncomplete
Total 41710801 41388749 0 0
T22 6433 5034 0 0
T33 2870 2788 0 0
T34 7634 7557 0 0
T35 5820 5757 0 0
T36 3255 3183 0 0
T37 1842 1757 0 0
T38 3234 3162 0 0
T39 3068 2985 0 0
T40 11899 11803 0 0
T41 6883 6814 0 0

FpvSecCmRegWeOnehotCheck_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 41710801 120 0 0
T23 5526 20 0 0
T24 1227 0 0 0
T25 3071 0 0 0
T26 3929 0 0 0
T27 1152 0 0 0
T28 3725 0 0 0
T29 2870 0 0 0
T30 7800 0 0 0
T31 5438 0 0 0
T44 3405 0 0 0
T51 0 20 0 0
T52 0 20 0 0
T64 0 30 0 0
T65 0 30 0 0

IntrGpioKnown
NameAttemptsReal SuccessesFailuresIncomplete
Total 41710801 41388749 0 0
T22 6433 5034 0 0
T33 2870 2788 0 0
T34 7634 7557 0 0
T35 5820 5757 0 0
T36 3255 3183 0 0
T37 1842 1757 0 0
T38 3234 3162 0 0
T39 3068 2985 0 0
T40 11899 11803 0 0
T41 6883 6814 0 0

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