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_08_28/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: T23 T24 T25  64 65 // GPIO_OUT 66 1/1 assign cio_gpio_o = cio_gpio_q; Tests: T23 T24 T25  67 1/1 assign cio_gpio_en_o = cio_gpio_en_q; Tests: T23 T24 T25  68 69 1/1 assign hw2reg.direct_out.d = cio_gpio_q; Tests: T23 T24 T25  70 1/1 assign hw2reg.masked_out_upper.data.d = cio_gpio_q[31:16]; Tests: T23 T24 T25  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: T23 T24 T25  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: T23 T24 T25  77 1/1 cio_gpio_q <= '0; Tests: T23 T24 T25  78 1/1 end else if (reg2hw.direct_out.qe) begin Tests: T23 T24 T25  79 1/1 cio_gpio_q <= reg2hw.direct_out.q; Tests: T23 T24 T25  80 1/1 end else if (reg2hw.masked_out_upper.data.qe) begin Tests: T23 T24 T25  81 1/1 cio_gpio_q[31:16] <= Tests: T25 T26 T27  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: T23 T24 T25  85 1/1 cio_gpio_q[15:0] <= Tests: T25 T26 T27  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: T23 T24 T25  93 1/1 assign hw2reg.masked_oe_upper.data.d = cio_gpio_en_q[31:16]; Tests: T23 T24 T25  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: T23 T24 T25  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: T23 T24 T25  100 1/1 cio_gpio_en_q <= '0; Tests: T23 T24 T25  101 1/1 end else if (reg2hw.direct_oe.qe) begin Tests: T23 T24 T25  102 1/1 cio_gpio_en_q <= reg2hw.direct_oe.q; Tests: T23 T24 T25  103 1/1 end else if (reg2hw.masked_oe_upper.data.qe) begin Tests: T23 T24 T25  104 1/1 cio_gpio_en_q[31:16] <= Tests: T25 T26 T27  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: T23 T24 T25  108 1/1 cio_gpio_en_q[15:0] <= Tests: T25 T26 T27  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: T23 T24 T25  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: T23 T24 T25  138 1/1 assign event_intr_fall = ( data_in_q & ~data_in_d) & reg2hw.intr_ctrl_en_falling.q; Tests: T23 T24 T25  139 1/1 assign event_intr_acthigh = data_in_d & reg2hw.intr_ctrl_en_lvlhigh.q; Tests: T23 T24 T25  140 1/1 assign event_intr_actlow = ~data_in_d & reg2hw.intr_ctrl_en_lvllow.q; Tests: T23 T24 T25  141 142 1/1 assign event_intr_combined = event_intr_rise | Tests: T23 T24 T25  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: T23 T24 T25 

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
01CoveredT43,T41,T44
10CoveredT23,T24,T25
11CoveredT43,T41,T44

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 T23,T24,T25 Yes T23,T24,T25 INPUT
rst_ni Yes Yes T30,T31,T33 Yes T23,T24,T25 INPUT
tl_i.d_ready Yes Yes T24,T26,T28 Yes T23,T24,T25 INPUT
tl_i.a_user.data_intg[6:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 INPUT
tl_i.a_user.cmd_intg[6:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 INPUT
tl_i.a_user.instr_type[3:0] Yes Yes T24,T40,T41 Yes T24,T40,T41 INPUT
tl_i.a_user.rsvd[4:0] Unreachable Unreachable Unreachable INPUT
tl_i.a_data[31:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 INPUT
tl_i.a_mask[3:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 INPUT
tl_i.a_address[31:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 INPUT
tl_i.a_source[7:0] Yes Yes T24,T26,T28 Yes T24,T26,T28 INPUT
tl_i.a_size[1:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 INPUT
tl_i.a_param[2:0] Unreachable Unreachable Unreachable INPUT
tl_i.a_opcode[2:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 INPUT
tl_i.a_valid Yes Yes T23,T24,T25 Yes T23,T24,T25 INPUT
tl_o.a_ready Yes Yes T23,T24,T25 Yes T23,T24,T25 OUTPUT
tl_o.d_error Yes Yes T34,T35,T36 Yes T34,T35,T36 OUTPUT
tl_o.d_user.data_intg[6:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 OUTPUT
tl_o.d_user.rsp_intg[5:0] Yes Yes *T23,*T24,*T25 Yes T23,T24,T25 OUTPUT
tl_o.d_user.rsp_intg[6] Unreachable Unreachable Unreachable OUTPUT
tl_o.d_data[31:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 OUTPUT
tl_o.d_sink Unreachable Unreachable Unreachable OUTPUT
tl_o.d_source[7:0] Yes Yes T24,T26,T28 Yes T23,T24,T26 OUTPUT
tl_o.d_size[1:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 OUTPUT
tl_o.d_param[2:0] Unreachable Unreachable Unreachable OUTPUT
tl_o.d_opcode[0] Yes Yes *T23,*T24,*T25 Yes T23,T24,T25 OUTPUT
tl_o.d_opcode[2:1] Unreachable Unreachable Unreachable OUTPUT
tl_o.d_valid Yes Yes T23,T24,T25 Yes T23,T24,T25 OUTPUT
intr_gpio_o[31:0] Yes Yes T28,T29,T31 Yes T28,T29,T31 OUTPUT
alert_rx_i[0].ack_n Yes Yes T23,T24,T25 Yes T23,T24,T25 INPUT
alert_rx_i[0].ack_p Yes Yes T30,T43,T41 Yes T30,T43,T41 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 T23,T24,T25 Yes T23,T24,T25 OUTPUT
alert_tx_o[0].alert_p Yes Yes T30,T43,T41 Yes T30,T43,T41 OUTPUT
cio_gpio_i[31:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 INPUT
cio_gpio_o[31:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 OUTPUT
cio_gpio_en_o[31:0] Yes Yes T23,T24,T25 Yes T23,T24,T25 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 T23,T24,T25
0 1 - - Covered T23,T24,T25
0 0 1 - Covered T25,T26,T27
0 0 0 1 Covered T25,T26,T27
0 0 0 0 Covered T23,T24,T25


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 T23,T24,T25
0 1 - - Covered T23,T24,T25
0 0 1 - Covered T25,T26,T27
0 0 0 1 Covered T25,T26,T27
0 0 0 0 Covered T23,T24,T25


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 51007574 50670489 0 0
CioGpioEnOKnown 51007574 50670489 0 0
CioGpioOKnown 51007574 50670489 0 0
FpvSecCmRegWeOnehotCheck_A 51007574 110 0 0
IntrGpioKnown 51007574 50670489 0 0


AlertsKnown_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 51007574 50670489 0 0
T23 3325 3226 0 0
T24 6892 6829 0 0
T25 3181 3101 0 0
T26 3826 3770 0 0
T27 3051 2978 0 0
T28 5288 5191 0 0
T29 16890 16828 0 0
T30 6059 4434 0 0
T31 6552 4094 0 0
T32 6896 6799 0 0

CioGpioEnOKnown
NameAttemptsReal SuccessesFailuresIncomplete
Total 51007574 50670489 0 0
T23 3325 3226 0 0
T24 6892 6829 0 0
T25 3181 3101 0 0
T26 3826 3770 0 0
T27 3051 2978 0 0
T28 5288 5191 0 0
T29 16890 16828 0 0
T30 6059 4434 0 0
T31 6552 4094 0 0
T32 6896 6799 0 0

CioGpioOKnown
NameAttemptsReal SuccessesFailuresIncomplete
Total 51007574 50670489 0 0
T23 3325 3226 0 0
T24 6892 6829 0 0
T25 3181 3101 0 0
T26 3826 3770 0 0
T27 3051 2978 0 0
T28 5288 5191 0 0
T29 16890 16828 0 0
T30 6059 4434 0 0
T31 6552 4094 0 0
T32 6896 6799 0 0

FpvSecCmRegWeOnehotCheck_A
NameAttemptsReal SuccessesFailuresIncomplete
Total 51007574 110 0 0
T11 0 30 0 0
T30 6059 20 0 0
T31 6552 0 0 0
T32 6896 0 0 0
T40 6505 0 0 0
T42 0 30 0 0
T43 954 0 0 0
T45 2818 0 0 0
T52 0 20 0 0
T53 0 10 0 0
T54 1791 0 0 0
T55 4140 0 0 0
T56 7772 0 0 0
T57 10224 0 0 0

IntrGpioKnown
NameAttemptsReal SuccessesFailuresIncomplete
Total 51007574 50670489 0 0
T23 3325 3226 0 0
T24 6892 6829 0 0
T25 3181 3101 0 0
T26 3826 3770 0 0
T27 3051 2978 0 0
T28 5288 5191 0 0
T29 16890 16828 0 0
T30 6059 4434 0 0
T31 6552 4094 0 0
T32 6896 6799 0 0

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