Line Coverage for Module :
rv_timer
| Line No. | Total | Covered | Percent |
TOTAL | | 18 | 18 | 100.00 |
CONT_ASSIGN | 56 | 1 | 1 | 100.00 |
CONT_ASSIGN | 57 | 1 | 1 | 100.00 |
CONT_ASSIGN | 58 | 1 | 1 | 100.00 |
CONT_ASSIGN | 60 | 1 | 1 | 100.00 |
CONT_ASSIGN | 61 | 1 | 1 | 100.00 |
CONT_ASSIGN | 62 | 1 | 1 | 100.00 |
CONT_ASSIGN | 63 | 1 | 1 | 100.00 |
CONT_ASSIGN | 64 | 1 | 1 | 100.00 |
CONT_ASSIGN | 65 | 1 | 1 | 100.00 |
CONT_ASSIGN | 66 | 1 | 1 | 100.00 |
CONT_ASSIGN | 68 | 1 | 1 | 100.00 |
CONT_ASSIGN | 69 | 1 | 1 | 100.00 |
CONT_ASSIGN | 70 | 1 | 1 | 100.00 |
CONT_ASSIGN | 71 | 1 | 1 | 100.00 |
CONT_ASSIGN | 72 | 1 | 1 | 100.00 |
CONT_ASSIGN | 73 | 1 | 1 | 100.00 |
CONT_ASSIGN | 74 | 1 | 1 | 100.00 |
CONT_ASSIGN | 132 | 1 | 1 | 100.00 |
55 // be connected manually.
56 1/1 assign active[0] = reg2hw.ctrl[0].q;
Tests: T1 T2 T3
57 1/1 assign prescaler = '{reg2hw.cfg0.prescale.q};
Tests: T1 T2 T3
58 1/1 assign step = '{reg2hw.cfg0.step.q};
Tests: T1 T2 T3
59
60 1/1 assign hw2reg.timer_v_upper0.de = tick[0];
Tests: T1 T2 T3
61 1/1 assign hw2reg.timer_v_lower0.de = tick[0];
Tests: T1 T2 T3
62 1/1 assign hw2reg.timer_v_upper0.d = mtime_d[0][63:32];
Tests: T1 T2 T3
63 1/1 assign hw2reg.timer_v_lower0.d = mtime_d[0][31: 0];
Tests: T1 T2 T3
64 1/1 assign mtime[0] = {reg2hw.timer_v_upper0.q, reg2hw.timer_v_lower0.q};
Tests: T1 T2 T3
65 1/1 assign mtimecmp = '{'{{reg2hw.compare_upper0_0.q,reg2hw.compare_lower0_0.q}}};
Tests: T1 T2 T3
66 1/1 assign mtimecmp_update[0][0] = reg2hw.compare_upper0_0.qe | reg2hw.compare_lower0_0.qe;
Tests: T1 T2 T3
67
68 1/1 assign intr_timer_expired_hart0_timer0_o = intr_out[0];
Tests: T1 T2 T3
69 1/1 assign intr_timer_en = reg2hw.intr_enable0[0].q;
Tests: T1 T2 T3
70 1/1 assign intr_timer_state_q = reg2hw.intr_state0[0].q;
Tests: T1 T2 T3
71 1/1 assign intr_timer_test_q = reg2hw.intr_test0[0].q;
Tests: T1 T2 T3
72 1/1 assign intr_timer_test_qe = reg2hw.intr_test0[0].qe;
Tests: T6 T11 T12
73 1/1 assign hw2reg.intr_state0[0].de = intr_timer_state_de | mtimecmp_update[0][0];
Tests: T1 T2 T3
74 1/1 assign hw2reg.intr_state0[0].d = intr_timer_state_d & ~mtimecmp_update[0][0];
Tests: T1 T2 T3
75
76
77 for (genvar h = 0 ; h < N_HARTS ; h++) begin : gen_harts
78 prim_intr_hw #(
79 .Width(N_TIMERS)
80 ) u_intr_hw (
81 .clk_i,
82 .rst_ni,
83 .event_intr_i (intr_timer_set),
84
85 .reg2hw_intr_enable_q_i (intr_timer_en[h*N_TIMERS+:N_TIMERS]),
86 .reg2hw_intr_test_q_i (intr_timer_test_q[h*N_TIMERS+:N_TIMERS]),
87 .reg2hw_intr_test_qe_i (intr_timer_test_qe[h]),
88 .reg2hw_intr_state_q_i (intr_timer_state_q[h*N_TIMERS+:N_TIMERS]),
89 .hw2reg_intr_state_de_o (intr_timer_state_de),
90 .hw2reg_intr_state_d_o (intr_timer_state_d[h*N_TIMERS+:N_TIMERS]),
91
92 .intr_o (intr_out[h*N_TIMERS+:N_TIMERS])
93 );
94
95 timer_core #(
96 .N (N_TIMERS)
97 ) u_core (
98 .clk_i,
99 .rst_ni,
100
101 .active (active[h]),
102 .prescaler (prescaler[h]),
103 .step (step[h]),
104
105 .tick (tick[h]),
106
107 .mtime_d (mtime_d[h]),
108 .mtime (mtime[h]),
109 .mtimecmp (mtimecmp[h]),
110
111 .intr (intr_timer_set[h*N_TIMERS+:N_TIMERS])
112 );
113 end : gen_harts
114
115 // Register module
116 logic [NumAlerts-1:0] alert_test, alerts;
117 rv_timer_reg_top u_reg (
118 .clk_i,
119 .rst_ni,
120
121 .tl_i,
122 .tl_o,
123
124 .reg2hw,
125 .hw2reg,
126
127 // SEC_CM: BUS.INTEGRITY
128 .intg_err_o (alerts[0])
129 );
130
131 // Alerts
132 1/1 assign alert_test = {
Tests: T1 T2 T3
Cond Coverage for Module :
rv_timer
| Total | Covered | Percent |
Conditions | 12 | 10 | 83.33 |
Logical | 12 | 10 | 83.33 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 66
EXPRESSION (reg2hw.compare_upper0_0.qe | reg2hw.compare_lower0_0.qe)
-------------1------------ -------------2------------
-1- | -2- | Status | Tests |
0 | 0 | Covered | T1,T2,T3 |
0 | 1 | Covered | T3,T5,T8 |
1 | 0 | Covered | T3,T5,T8 |
LINE 73
EXPRESSION (intr_timer_state_de | mtimecmp_update[0][0])
---------1--------- ----------2----------
-1- | -2- | Status | Tests |
0 | 0 | Covered | T1,T2,T3 |
0 | 1 | Covered | T3,T5,T8 |
1 | 0 | Covered | T5,T6,T8 |
LINE 74
EXPRESSION (intr_timer_state_d & ((~mtimecmp_update[0][0])))
---------1-------- -------------2------------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T5,T8,T10 |
1 | 1 | Covered | T5,T6,T8 |
LINE 132
SUB-EXPRESSION (reg2hw.alert_test.q & reg2hw.alert_test.qe)
---------1--------- ----------2---------
-1- | -2- | Status | Tests |
0 | 1 | Not Covered | |
1 | 0 | Covered | T3,T5,T6 |
1 | 1 | Not Covered | |
Toggle Coverage for Module :
rv_timer
| Total | Covered | Percent |
Totals |
27 |
27 |
100.00 |
Total Bits |
334 |
334 |
100.00 |
Total Bits 0->1 |
167 |
167 |
100.00 |
Total Bits 1->0 |
167 |
167 |
100.00 |
| | | |
Ports |
27 |
27 |
100.00 |
Port Bits |
334 |
334 |
100.00 |
Port Bits 0->1 |
167 |
167 |
100.00 |
Port Bits 1->0 |
167 |
167 |
100.00 |
Port Details
Name | Toggle | Toggle 1->0 | Tests | Toggle 0->1 | Tests | Direction |
clk_i |
Yes |
Yes |
T1,T2,T3 |
Yes |
T1,T2,T3 |
INPUT |
rst_ni |
Yes |
Yes |
T1,T2,T3 |
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 |
T3,T5,T6 |
Yes |
T3,T5,T6 |
INPUT |
tl_i.a_user.cmd_intg[6:0] |
Yes |
Yes |
T3,T5,T6 |
Yes |
T3,T5,T6 |
INPUT |
tl_i.a_user.instr_type[3:0] |
Yes |
Yes |
T7,T9,T11 |
Yes |
T7,T9,T11 |
INPUT |
tl_i.a_user.rsvd[4:0] |
Unreachable |
Unreachable |
|
Unreachable |
|
INPUT |
tl_i.a_data[31:0] |
Yes |
Yes |
T3,T5,T6 |
Yes |
T3,T5,T6 |
INPUT |
tl_i.a_mask[3:0] |
Yes |
Yes |
T3,T5,T6 |
Yes |
T3,T5,T6 |
INPUT |
tl_i.a_address[31:0] |
Yes |
Yes |
T3,T5,T6 |
Yes |
T3,T5,T6 |
INPUT |
tl_i.a_source[7:0] |
Yes |
Yes |
T3,T6,T7 |
Yes |
T3,T6,T7 |
INPUT |
tl_i.a_size[1:0] |
Yes |
Yes |
T3,T5,T6 |
Yes |
T3,T5,T6 |
INPUT |
tl_i.a_param[2:0] |
Unreachable |
Unreachable |
|
Unreachable |
|
INPUT |
tl_i.a_opcode[2:0] |
Yes |
Yes |
T3,T5,T6 |
Yes |
T3,T5,T6 |
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 |
Yes |
Yes |
T11,T13,T14 |
Yes |
T11,T13,T14 |
OUTPUT |
tl_o.d_user.data_intg[6:0] |
Yes |
Yes |
T5,T6,T8 |
Yes |
T5,T6,T8 |
OUTPUT |
tl_o.d_user.rsp_intg[5:0] |
Yes |
Yes |
*T3,*T5,*T6 |
Yes |
T3,T4,T5 |
OUTPUT |
tl_o.d_user.rsp_intg[6] |
Unreachable |
Unreachable |
|
Unreachable |
|
OUTPUT |
tl_o.d_data[31:0] |
Yes |
Yes |
T3,T5,T6 |
Yes |
T3,T5,T6 |
OUTPUT |
tl_o.d_sink |
Unreachable |
Unreachable |
|
Unreachable |
|
OUTPUT |
tl_o.d_source[7:0] |
Yes |
Yes |
T3,T6,T8 |
Yes |
T1,T3,T4 |
OUTPUT |
tl_o.d_size[1:0] |
Yes |
Yes |
T3,T5,T6 |
Yes |
T3,T5,T6 |
OUTPUT |
tl_o.d_param[2:0] |
Unreachable |
Unreachable |
|
Unreachable |
|
OUTPUT |
tl_o.d_opcode[0] |
Yes |
Yes |
*T3,*T5,*T6 |
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 |
alert_rx_i[0].ack_n |
Yes |
Yes |
T1,T2,T3 |
Yes |
T1,T2,T3 |
INPUT |
alert_rx_i[0].ack_p |
Yes |
Yes |
T1,T2,T4 |
Yes |
T1,T2,T4 |
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 |
T1,T2,T3 |
Yes |
T1,T2,T3 |
OUTPUT |
alert_tx_o[0].alert_p |
Yes |
Yes |
T1,T2,T4 |
Yes |
T1,T2,T4 |
OUTPUT |
intr_timer_expired_hart0_timer0_o |
Yes |
Yes |
T6,T8,T10 |
Yes |
T6,T8,T10 |
OUTPUT |
*Tests covering at least one bit in the range
Assert Coverage for Module :
rv_timer
Assertion Details
AlertsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
2147483647 |
2147483647 |
0 |
0 |
T1 |
5763 |
4156 |
0 |
0 |
T2 |
5648 |
3993 |
0 |
0 |
T3 |
10218 |
10026 |
0 |
0 |
T4 |
5345 |
3841 |
0 |
0 |
T5 |
111503 |
111498 |
0 |
0 |
T6 |
1863 |
1701 |
0 |
0 |
T7 |
8897 |
6472 |
0 |
0 |
T8 |
105366 |
105334 |
0 |
0 |
T9 |
5752 |
4210 |
0 |
0 |
T10 |
80594 |
80497 |
0 |
0 |
FpvSecCmRegWeOnehotCheck_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
2147483647 |
110 |
0 |
0 |
T1 |
5763 |
20 |
0 |
0 |
T2 |
5648 |
20 |
0 |
0 |
T3 |
10218 |
0 |
0 |
0 |
T4 |
5345 |
20 |
0 |
0 |
T5 |
111503 |
0 |
0 |
0 |
T6 |
1863 |
0 |
0 |
0 |
T7 |
8897 |
30 |
0 |
0 |
T8 |
105366 |
0 |
0 |
0 |
T9 |
5752 |
20 |
0 |
0 |
T10 |
80594 |
0 |
0 |
0 |
IntrTimerExpiredHart0Timer0Known
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
2147483647 |
2147483647 |
0 |
0 |
T1 |
5763 |
4156 |
0 |
0 |
T2 |
5648 |
3993 |
0 |
0 |
T3 |
10218 |
10026 |
0 |
0 |
T4 |
5345 |
3841 |
0 |
0 |
T5 |
111503 |
111498 |
0 |
0 |
T6 |
1863 |
1701 |
0 |
0 |
T7 |
8897 |
6472 |
0 |
0 |
T8 |
105366 |
105334 |
0 |
0 |
T9 |
5752 |
4210 |
0 |
0 |
T10 |
80594 |
80497 |
0 |
0 |
TlOAReadyKnown
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
2147483647 |
2147483647 |
0 |
0 |
T1 |
5763 |
4156 |
0 |
0 |
T2 |
5648 |
3993 |
0 |
0 |
T3 |
10218 |
10026 |
0 |
0 |
T4 |
5345 |
3841 |
0 |
0 |
T5 |
111503 |
111498 |
0 |
0 |
T6 |
1863 |
1701 |
0 |
0 |
T7 |
8897 |
6472 |
0 |
0 |
T8 |
105366 |
105334 |
0 |
0 |
T9 |
5752 |
4210 |
0 |
0 |
T10 |
80594 |
80497 |
0 |
0 |
TlODValidKnown
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
2147483647 |
2147483647 |
0 |
0 |
T1 |
5763 |
4156 |
0 |
0 |
T2 |
5648 |
3993 |
0 |
0 |
T3 |
10218 |
10026 |
0 |
0 |
T4 |
5345 |
3841 |
0 |
0 |
T5 |
111503 |
111498 |
0 |
0 |
T6 |
1863 |
1701 |
0 |
0 |
T7 |
8897 |
6472 |
0 |
0 |
T8 |
105366 |
105334 |
0 |
0 |
T9 |
5752 |
4210 |
0 |
0 |
T10 |
80594 |
80497 |
0 |
0 |