Line Coverage for Module :
prim_mubi4_sync ( parameter NumCopies=1,AsyncOn=1,StabilityCheck=1,ResetValue=9 )
Line Coverage for Module self-instances :
| Line No. | Total | Covered | Percent |
TOTAL | | 6 | 6 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
ALWAYS | 117 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
95 // hence this mux can be implemented behaviorally.
96 4/4 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Tests: T4 T5 T6 | T4 T5 T6 | T4 T5 T6 | T4 T5 T6
97 end
98
99 // Note regarding SVAs below:
100 //
101 // 1) Without the sampled rst_ni pre-condition, this may cause false assertion failures right after
102 // a reset release, since the "disable iff" condition with the rst_ni is sampled in the "observed"
103 // SV scheduler region after all assignments have been evaluated (see also LRM section 16.12, page
104 // 423). This is a simulation artifact due to reset synchronization in RTL, which releases rst_ni
105 // on the active clock edge. This causes the assertion to evaluate although the reset was actually
106 // 0 when entering this simulation cycle.
107 //
108 // 2) Similarly to 1) there can be sampling mismatches of the lc_en_i signal since that signal may
109 // originate from a different clock domain. I.e., in cases where the lc_en_i signal changes exactly
110 // at the same time that the clk_i signal rises, the SVA will not pick up that change in that clock
111 // cycle, whereas RTL will because SVAs sample values in the "preponed" region. To that end we make
112 // use of an RTL helper variable to sample the lc_en_i signal, hence ensuring that there are no
113 // sampling mismatches.
114 `ifdef INC_ASSERT
115 mubi4_t mubi_in_sva_q;
116 always_ff @(posedge clk_i) begin
117 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
118 end
119 `ASSERT(OutputIfUnstable_A, sig_unstable |-> mubi_o == {NumCopies{reset_value}})
120 `ASSERT(OutputDelay_A,
121 rst_ni |-> ##[3:4] sig_unstable || mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}})
122 `endif
123 end else begin : gen_no_stable_chks
124 assign mubi = mubi_sync;
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 mubi_in_sva_q <= mubi_i;
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Line Coverage for Module :
prim_mubi4_sync ( parameter NumCopies=1,AsyncOn=0,StabilityCheck=0,ResetValue=9 )
Line Coverage for Module self-instances :
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Line Coverage for Module :
prim_mubi4_sync ( parameter NumCopies=6,AsyncOn=1,StabilityCheck=0,ResetValue=9 )
Line Coverage for Module self-instances :
| Line No. | Total | Covered | Percent |
TOTAL | | 8 | 8 | 100.00 |
CONT_ASSIGN | 124 | 1 | 1 | 100.00 |
ALWAYS | 128 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
123 end else begin : gen_no_stable_chks
124 1/1 assign mubi = mubi_sync;
Tests: T4 T5 T6
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 6/6 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6 | T4 T5 T6 | T4 T5 T6 | T4 T5 T6 | T4 T5 T6 | T4 T5 T6
Line Coverage for Module :
prim_mubi4_sync ( parameter NumCopies=1,AsyncOn=1,StabilityCheck=0,ResetValue=9 )
Line Coverage for Module self-instances :
| Line No. | Total | Covered | Percent |
TOTAL | | 3 | 3 | 100.00 |
CONT_ASSIGN | 124 | 1 | 1 | 100.00 |
ALWAYS | 128 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
123 end else begin : gen_no_stable_chks
124 1/1 assign mubi = mubi_sync;
Tests: T4 T5 T6
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Cond Coverage for Module :
prim_mubi4_sync
| Total | Covered | Percent |
Conditions | 8 | 8 | 100.00 |
Logical | 8 | 8 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[0].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[0] : gen_flops.gen_stable_chks.mubi_q[0])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[1] : gen_flops.gen_stable_chks.mubi_q[1])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[2] : gen_flops.gen_stable_chks.mubi_q[2])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[3] : gen_flops.gen_stable_chks.mubi_q[3])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
Branch Coverage for Module :
prim_mubi4_sync
| Line No. | Total | Covered | Percent |
Branches |
|
8 |
8 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Module :
prim_mubi4_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
22372 |
22372 |
0 |
0 |
T4 |
28 |
28 |
0 |
0 |
T5 |
28 |
28 |
0 |
0 |
T6 |
28 |
28 |
0 |
0 |
T28 |
28 |
28 |
0 |
0 |
T29 |
28 |
28 |
0 |
0 |
T30 |
28 |
28 |
0 |
0 |
T31 |
28 |
28 |
0 |
0 |
T32 |
28 |
28 |
0 |
0 |
T33 |
28 |
28 |
0 |
0 |
T34 |
28 |
28 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1747056588 |
1674907266 |
0 |
0 |
T4 |
33753 |
30482 |
0 |
0 |
T5 |
54367 |
50998 |
0 |
0 |
T6 |
61661 |
57557 |
0 |
0 |
T28 |
54647 |
52620 |
0 |
0 |
T29 |
40213 |
34505 |
0 |
0 |
T30 |
39300 |
35427 |
0 |
0 |
T31 |
140065 |
136802 |
0 |
0 |
T32 |
56797 |
52029 |
0 |
0 |
T33 |
109192 |
106440 |
0 |
0 |
T34 |
144290 |
140942 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
237628794 |
224519292 |
0 |
14382 |
T4 |
5304 |
4734 |
0 |
18 |
T5 |
12210 |
11388 |
0 |
18 |
T6 |
13884 |
12888 |
0 |
18 |
T28 |
12510 |
11988 |
0 |
18 |
T29 |
9144 |
7722 |
0 |
18 |
T30 |
8892 |
7890 |
0 |
18 |
T31 |
12612 |
12264 |
0 |
18 |
T32 |
12822 |
11664 |
0 |
18 |
T33 |
14286 |
13884 |
0 |
18 |
T34 |
10152 |
9864 |
0 |
18 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
568403323 |
543762768 |
0 |
16779 |
T4 |
10538 |
9425 |
0 |
21 |
T5 |
14689 |
13705 |
0 |
21 |
T6 |
16586 |
15400 |
0 |
21 |
T28 |
14512 |
13907 |
0 |
21 |
T29 |
10804 |
9120 |
0 |
21 |
T30 |
10543 |
9356 |
0 |
21 |
T31 |
49523 |
48201 |
0 |
21 |
T32 |
15315 |
13936 |
0 |
21 |
T33 |
35847 |
34860 |
0 |
21 |
T34 |
52776 |
51331 |
0 |
21 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
568403323 |
129878 |
0 |
0 |
T4 |
10538 |
16 |
0 |
0 |
T5 |
14689 |
78 |
0 |
0 |
T6 |
16586 |
153 |
0 |
0 |
T28 |
14512 |
168 |
0 |
0 |
T29 |
10804 |
20 |
0 |
0 |
T30 |
10543 |
36 |
0 |
0 |
T31 |
49523 |
103 |
0 |
0 |
T32 |
15315 |
12 |
0 |
0 |
T33 |
35847 |
251 |
0 |
0 |
T34 |
52776 |
16 |
0 |
0 |
T49 |
0 |
78 |
0 |
0 |
T51 |
0 |
36 |
0 |
0 |
T53 |
0 |
34 |
0 |
0 |
T82 |
0 |
16 |
0 |
0 |
T129 |
0 |
29 |
0 |
0 |
T130 |
0 |
198 |
0 |
0 |
T142 |
0 |
129 |
0 |
0 |
T143 |
0 |
17 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
941024471 |
906534791 |
0 |
0 |
T4 |
17911 |
16284 |
0 |
0 |
T5 |
27468 |
25866 |
0 |
0 |
T6 |
31191 |
29230 |
0 |
0 |
T28 |
27625 |
26686 |
0 |
0 |
T29 |
20265 |
17624 |
0 |
0 |
T30 |
19865 |
18142 |
0 |
0 |
T31 |
77930 |
76298 |
0 |
0 |
T32 |
28660 |
26390 |
0 |
0 |
T33 |
59059 |
57657 |
0 |
0 |
T34 |
81362 |
79708 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_io_step_down_req_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 6 | 6 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
ALWAYS | 117 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
95 // hence this mux can be implemented behaviorally.
96 4/4 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Tests: T4 T6 T28 | T4 T6 T28 | T4 T6 T28 | T4 T6 T28
97 end
98
99 // Note regarding SVAs below:
100 //
101 // 1) Without the sampled rst_ni pre-condition, this may cause false assertion failures right after
102 // a reset release, since the "disable iff" condition with the rst_ni is sampled in the "observed"
103 // SV scheduler region after all assignments have been evaluated (see also LRM section 16.12, page
104 // 423). This is a simulation artifact due to reset synchronization in RTL, which releases rst_ni
105 // on the active clock edge. This causes the assertion to evaluate although the reset was actually
106 // 0 when entering this simulation cycle.
107 //
108 // 2) Similarly to 1) there can be sampling mismatches of the lc_en_i signal since that signal may
109 // originate from a different clock domain. I.e., in cases where the lc_en_i signal changes exactly
110 // at the same time that the clk_i signal rises, the SVA will not pick up that change in that clock
111 // cycle, whereas RTL will because SVAs sample values in the "preponed" region. To that end we make
112 // use of an RTL helper variable to sample the lc_en_i signal, hence ensuring that there are no
113 // sampling mismatches.
114 `ifdef INC_ASSERT
115 mubi4_t mubi_in_sva_q;
116 always_ff @(posedge clk_i) begin
117 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
118 end
119 `ASSERT(OutputIfUnstable_A, sig_unstable |-> mubi_o == {NumCopies{reset_value}})
120 `ASSERT(OutputDelay_A,
121 rst_ni |-> ##[3:4] sig_unstable || mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}})
122 `endif
123 end else begin : gen_no_stable_chks
124 assign mubi = mubi_sync;
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 mubi_in_sva_q <= mubi_i;
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T6 T28
Cond Coverage for Instance : tb.dut.u_io_step_down_req_sync
| Total | Covered | Percent |
Conditions | 8 | 8 | 100.00 |
Logical | 8 | 8 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[0].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[0] : gen_flops.gen_stable_chks.mubi_q[0])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[1] : gen_flops.gen_stable_chks.mubi_q[1])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[2] : gen_flops.gen_stable_chks.mubi_q[2])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[3] : gen_flops.gen_stable_chks.mubi_q[3])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
Branch Coverage for Instance : tb.dut.u_io_step_down_req_sync
| Line No. | Total | Covered | Percent |
Branches |
|
8 |
8 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_io_step_down_req_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
90243933 |
86400155 |
0 |
0 |
T4 |
1698 |
1522 |
0 |
0 |
T5 |
2055 |
1920 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2002 |
1922 |
0 |
0 |
T29 |
1508 |
1277 |
0 |
0 |
T30 |
1467 |
1305 |
0 |
0 |
T31 |
8771 |
8540 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
6017 |
5855 |
0 |
0 |
T34 |
9560 |
9302 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
90243933 |
86393276 |
0 |
2397 |
T4 |
1698 |
1519 |
0 |
3 |
T5 |
2055 |
1917 |
0 |
3 |
T6 |
2314 |
2148 |
0 |
3 |
T28 |
2002 |
1919 |
0 |
3 |
T29 |
1508 |
1274 |
0 |
3 |
T30 |
1467 |
1302 |
0 |
3 |
T31 |
8771 |
8537 |
0 |
3 |
T32 |
2137 |
1944 |
0 |
3 |
T33 |
6017 |
5852 |
0 |
3 |
T34 |
9560 |
9299 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
90243933 |
18336 |
0 |
0 |
T4 |
1698 |
3 |
0 |
0 |
T5 |
2055 |
0 |
0 |
0 |
T6 |
2314 |
53 |
0 |
0 |
T28 |
2002 |
35 |
0 |
0 |
T29 |
1508 |
0 |
0 |
0 |
T30 |
1467 |
12 |
0 |
0 |
T31 |
8771 |
0 |
0 |
0 |
T32 |
2137 |
0 |
0 |
0 |
T33 |
6017 |
0 |
0 |
0 |
T34 |
9560 |
0 |
0 |
0 |
T49 |
0 |
30 |
0 |
0 |
T82 |
0 |
7 |
0 |
0 |
T129 |
0 |
17 |
0 |
0 |
T130 |
0 |
117 |
0 |
0 |
T142 |
0 |
51 |
0 |
0 |
T143 |
0 |
7 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_io_div2_div_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_io_div2_div_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_io_div4_div_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_io_div4_div_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clkmgr_byp.u_io_ack_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 6 | 6 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
ALWAYS | 117 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
95 // hence this mux can be implemented behaviorally.
96 4/4 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Tests: T4 T6 T28 | T4 T6 T28 | T4 T6 T28 | T4 T6 T28
97 end
98
99 // Note regarding SVAs below:
100 //
101 // 1) Without the sampled rst_ni pre-condition, this may cause false assertion failures right after
102 // a reset release, since the "disable iff" condition with the rst_ni is sampled in the "observed"
103 // SV scheduler region after all assignments have been evaluated (see also LRM section 16.12, page
104 // 423). This is a simulation artifact due to reset synchronization in RTL, which releases rst_ni
105 // on the active clock edge. This causes the assertion to evaluate although the reset was actually
106 // 0 when entering this simulation cycle.
107 //
108 // 2) Similarly to 1) there can be sampling mismatches of the lc_en_i signal since that signal may
109 // originate from a different clock domain. I.e., in cases where the lc_en_i signal changes exactly
110 // at the same time that the clk_i signal rises, the SVA will not pick up that change in that clock
111 // cycle, whereas RTL will because SVAs sample values in the "preponed" region. To that end we make
112 // use of an RTL helper variable to sample the lc_en_i signal, hence ensuring that there are no
113 // sampling mismatches.
114 `ifdef INC_ASSERT
115 mubi4_t mubi_in_sva_q;
116 always_ff @(posedge clk_i) begin
117 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
118 end
119 `ASSERT(OutputIfUnstable_A, sig_unstable |-> mubi_o == {NumCopies{reset_value}})
120 `ASSERT(OutputDelay_A,
121 rst_ni |-> ##[3:4] sig_unstable || mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}})
122 `endif
123 end else begin : gen_no_stable_chks
124 assign mubi = mubi_sync;
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 mubi_in_sva_q <= mubi_i;
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T6 T28
Cond Coverage for Instance : tb.dut.u_clkmgr_byp.u_io_ack_sync
| Total | Covered | Percent |
Conditions | 8 | 8 | 100.00 |
Logical | 8 | 8 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[0].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[0] : gen_flops.gen_stable_chks.mubi_q[0])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[1] : gen_flops.gen_stable_chks.mubi_q[1])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[2] : gen_flops.gen_stable_chks.mubi_q[2])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[3] : gen_flops.gen_stable_chks.mubi_q[3])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
Branch Coverage for Instance : tb.dut.u_clkmgr_byp.u_io_ack_sync
| Line No. | Total | Covered | Percent |
Branches |
|
8 |
8 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_clkmgr_byp.u_io_ack_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37419882 |
0 |
2397 |
T4 |
884 |
789 |
0 |
3 |
T5 |
2035 |
1898 |
0 |
3 |
T6 |
2314 |
2148 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1524 |
1287 |
0 |
3 |
T30 |
1482 |
1315 |
0 |
3 |
T31 |
2102 |
2044 |
0 |
3 |
T32 |
2137 |
1944 |
0 |
3 |
T33 |
2381 |
2314 |
0 |
3 |
T34 |
1692 |
1644 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
11374 |
0 |
0 |
T4 |
884 |
3 |
0 |
0 |
T5 |
2035 |
0 |
0 |
0 |
T6 |
2314 |
27 |
0 |
0 |
T28 |
2085 |
37 |
0 |
0 |
T29 |
1524 |
0 |
0 |
0 |
T30 |
1482 |
0 |
0 |
0 |
T31 |
2102 |
0 |
0 |
0 |
T32 |
2137 |
0 |
0 |
0 |
T33 |
2381 |
0 |
0 |
0 |
T34 |
1692 |
0 |
0 |
0 |
T49 |
0 |
32 |
0 |
0 |
T51 |
0 |
36 |
0 |
0 |
T53 |
0 |
34 |
0 |
0 |
T82 |
0 |
3 |
0 |
0 |
T130 |
0 |
39 |
0 |
0 |
T142 |
0 |
36 |
0 |
0 |
T143 |
0 |
7 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clkmgr_byp.u_all_ack_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 6 | 6 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
ALWAYS | 117 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
95 // hence this mux can be implemented behaviorally.
96 4/4 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Tests: T4 T6 T28 | T4 T6 T28 | T4 T6 T28 | T4 T6 T28
97 end
98
99 // Note regarding SVAs below:
100 //
101 // 1) Without the sampled rst_ni pre-condition, this may cause false assertion failures right after
102 // a reset release, since the "disable iff" condition with the rst_ni is sampled in the "observed"
103 // SV scheduler region after all assignments have been evaluated (see also LRM section 16.12, page
104 // 423). This is a simulation artifact due to reset synchronization in RTL, which releases rst_ni
105 // on the active clock edge. This causes the assertion to evaluate although the reset was actually
106 // 0 when entering this simulation cycle.
107 //
108 // 2) Similarly to 1) there can be sampling mismatches of the lc_en_i signal since that signal may
109 // originate from a different clock domain. I.e., in cases where the lc_en_i signal changes exactly
110 // at the same time that the clk_i signal rises, the SVA will not pick up that change in that clock
111 // cycle, whereas RTL will because SVAs sample values in the "preponed" region. To that end we make
112 // use of an RTL helper variable to sample the lc_en_i signal, hence ensuring that there are no
113 // sampling mismatches.
114 `ifdef INC_ASSERT
115 mubi4_t mubi_in_sva_q;
116 always_ff @(posedge clk_i) begin
117 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
118 end
119 `ASSERT(OutputIfUnstable_A, sig_unstable |-> mubi_o == {NumCopies{reset_value}})
120 `ASSERT(OutputDelay_A,
121 rst_ni |-> ##[3:4] sig_unstable || mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}})
122 `endif
123 end else begin : gen_no_stable_chks
124 assign mubi = mubi_sync;
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 mubi_in_sva_q <= mubi_i;
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T6 T28
Cond Coverage for Instance : tb.dut.u_clkmgr_byp.u_all_ack_sync
| Total | Covered | Percent |
Conditions | 8 | 8 | 100.00 |
Logical | 8 | 8 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[0].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[0] : gen_flops.gen_stable_chks.mubi_q[0])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[1] : gen_flops.gen_stable_chks.mubi_q[1])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[2] : gen_flops.gen_stable_chks.mubi_q[2])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[3] : gen_flops.gen_stable_chks.mubi_q[3])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T6,T28 |
Branch Coverage for Instance : tb.dut.u_clkmgr_byp.u_all_ack_sync
| Line No. | Total | Covered | Percent |
Branches |
|
8 |
8 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T6,T28 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_clkmgr_byp.u_all_ack_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37419882 |
0 |
2397 |
T4 |
884 |
789 |
0 |
3 |
T5 |
2035 |
1898 |
0 |
3 |
T6 |
2314 |
2148 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1524 |
1287 |
0 |
3 |
T30 |
1482 |
1315 |
0 |
3 |
T31 |
2102 |
2044 |
0 |
3 |
T32 |
2137 |
1944 |
0 |
3 |
T33 |
2381 |
2314 |
0 |
3 |
T34 |
1692 |
1644 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
12751 |
0 |
0 |
T4 |
884 |
2 |
0 |
0 |
T5 |
2035 |
0 |
0 |
0 |
T6 |
2314 |
18 |
0 |
0 |
T28 |
2085 |
34 |
0 |
0 |
T29 |
1524 |
0 |
0 |
0 |
T30 |
1482 |
10 |
0 |
0 |
T31 |
2102 |
0 |
0 |
0 |
T32 |
2137 |
0 |
0 |
0 |
T33 |
2381 |
0 |
0 |
0 |
T34 |
1692 |
0 |
0 |
0 |
T49 |
0 |
16 |
0 |
0 |
T82 |
0 |
6 |
0 |
0 |
T129 |
0 |
12 |
0 |
0 |
T130 |
0 |
42 |
0 |
0 |
T142 |
0 |
42 |
0 |
0 |
T143 |
0 |
3 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_main_root_ctrl.u_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_main_root_ctrl.u_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
97663932 |
0 |
0 |
T4 |
1768 |
1628 |
0 |
0 |
T5 |
2141 |
2043 |
0 |
0 |
T6 |
2411 |
2285 |
0 |
0 |
T28 |
2085 |
2044 |
0 |
0 |
T29 |
1562 |
1450 |
0 |
0 |
T30 |
1528 |
1502 |
0 |
0 |
T31 |
9137 |
8997 |
0 |
0 |
T32 |
2226 |
2086 |
0 |
0 |
T33 |
6267 |
6127 |
0 |
0 |
T34 |
9958 |
9832 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
97663932 |
0 |
0 |
T4 |
1768 |
1628 |
0 |
0 |
T5 |
2141 |
2043 |
0 |
0 |
T6 |
2411 |
2285 |
0 |
0 |
T28 |
2085 |
2044 |
0 |
0 |
T29 |
1562 |
1450 |
0 |
0 |
T30 |
1528 |
1502 |
0 |
0 |
T31 |
9137 |
8997 |
0 |
0 |
T32 |
2226 |
2086 |
0 |
0 |
T33 |
6267 |
6127 |
0 |
0 |
T34 |
9958 |
9832 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_io_root_ctrl.u_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_io_root_ctrl.u_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
90243933 |
88277094 |
0 |
0 |
T4 |
1698 |
1563 |
0 |
0 |
T5 |
2055 |
1961 |
0 |
0 |
T6 |
2314 |
2193 |
0 |
0 |
T28 |
2002 |
1963 |
0 |
0 |
T29 |
1508 |
1400 |
0 |
0 |
T30 |
1467 |
1442 |
0 |
0 |
T31 |
8771 |
8636 |
0 |
0 |
T32 |
2137 |
2002 |
0 |
0 |
T33 |
6017 |
5882 |
0 |
0 |
T34 |
9560 |
9439 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
90243933 |
88277094 |
0 |
0 |
T4 |
1698 |
1563 |
0 |
0 |
T5 |
2055 |
1961 |
0 |
0 |
T6 |
2314 |
2193 |
0 |
0 |
T28 |
2002 |
1963 |
0 |
0 |
T29 |
1508 |
1400 |
0 |
0 |
T30 |
1467 |
1442 |
0 |
0 |
T31 |
8771 |
8636 |
0 |
0 |
T32 |
2137 |
2002 |
0 |
0 |
T33 |
6017 |
5882 |
0 |
0 |
T34 |
9560 |
9439 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_io_div2_root_ctrl.u_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_io_div2_root_ctrl.u_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
44418973 |
44418973 |
0 |
0 |
T4 |
813 |
813 |
0 |
0 |
T5 |
981 |
981 |
0 |
0 |
T6 |
1188 |
1188 |
0 |
0 |
T28 |
1125 |
1125 |
0 |
0 |
T29 |
700 |
700 |
0 |
0 |
T30 |
756 |
756 |
0 |
0 |
T31 |
4318 |
4318 |
0 |
0 |
T32 |
1001 |
1001 |
0 |
0 |
T33 |
2941 |
2941 |
0 |
0 |
T34 |
4720 |
4720 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
44418973 |
44418973 |
0 |
0 |
T4 |
813 |
813 |
0 |
0 |
T5 |
981 |
981 |
0 |
0 |
T6 |
1188 |
1188 |
0 |
0 |
T28 |
1125 |
1125 |
0 |
0 |
T29 |
700 |
700 |
0 |
0 |
T30 |
756 |
756 |
0 |
0 |
T31 |
4318 |
4318 |
0 |
0 |
T32 |
1001 |
1001 |
0 |
0 |
T33 |
2941 |
2941 |
0 |
0 |
T34 |
4720 |
4720 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_io_div4_root_ctrl.u_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_io_div4_root_ctrl.u_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
22209072 |
22209072 |
0 |
0 |
T4 |
407 |
407 |
0 |
0 |
T5 |
490 |
490 |
0 |
0 |
T6 |
593 |
593 |
0 |
0 |
T28 |
562 |
562 |
0 |
0 |
T29 |
350 |
350 |
0 |
0 |
T30 |
377 |
377 |
0 |
0 |
T31 |
2159 |
2159 |
0 |
0 |
T32 |
501 |
501 |
0 |
0 |
T33 |
1471 |
1471 |
0 |
0 |
T34 |
2360 |
2360 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
22209072 |
22209072 |
0 |
0 |
T4 |
407 |
407 |
0 |
0 |
T5 |
490 |
490 |
0 |
0 |
T6 |
593 |
593 |
0 |
0 |
T28 |
562 |
562 |
0 |
0 |
T29 |
350 |
350 |
0 |
0 |
T30 |
377 |
377 |
0 |
0 |
T31 |
2159 |
2159 |
0 |
0 |
T32 |
501 |
501 |
0 |
0 |
T33 |
1471 |
1471 |
0 |
0 |
T34 |
2360 |
2360 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_usb_root_ctrl.u_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_usb_root_ctrl.u_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
47836459 |
46847130 |
0 |
0 |
T4 |
849 |
781 |
0 |
0 |
T5 |
1027 |
981 |
0 |
0 |
T6 |
1157 |
1097 |
0 |
0 |
T28 |
1001 |
982 |
0 |
0 |
T29 |
753 |
700 |
0 |
0 |
T30 |
733 |
721 |
0 |
0 |
T31 |
4385 |
4318 |
0 |
0 |
T32 |
1069 |
1002 |
0 |
0 |
T33 |
3009 |
2942 |
0 |
0 |
T34 |
4780 |
4719 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
47836459 |
46847130 |
0 |
0 |
T4 |
849 |
781 |
0 |
0 |
T5 |
1027 |
981 |
0 |
0 |
T6 |
1157 |
1097 |
0 |
0 |
T28 |
1001 |
982 |
0 |
0 |
T29 |
753 |
700 |
0 |
0 |
T30 |
733 |
721 |
0 |
0 |
T31 |
4385 |
4318 |
0 |
0 |
T32 |
1069 |
1002 |
0 |
0 |
T33 |
3009 |
2942 |
0 |
0 |
T34 |
4780 |
4719 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_calib_rdy_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 8 | 8 | 100.00 |
CONT_ASSIGN | 124 | 1 | 1 | 100.00 |
ALWAYS | 128 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
123 end else begin : gen_no_stable_chks
124 1/1 assign mubi = mubi_sync;
Tests: T4 T5 T6
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 6/6 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6 | T4 T5 T6 | T4 T5 T6 | T4 T5 T6 | T4 T5 T6 | T4 T5 T6
Assert Coverage for Instance : tb.dut.u_calib_rdy_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37419882 |
0 |
2397 |
T4 |
884 |
789 |
0 |
3 |
T5 |
2035 |
1898 |
0 |
3 |
T6 |
2314 |
2148 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1524 |
1287 |
0 |
3 |
T30 |
1482 |
1315 |
0 |
3 |
T31 |
2102 |
2044 |
0 |
3 |
T32 |
2137 |
1944 |
0 |
3 |
T33 |
2381 |
2314 |
0 |
3 |
T34 |
1692 |
1644 |
0 |
3 |
Line Coverage for Instance : tb.dut.u_io_meas.u_calib_rdy_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 3 | 3 | 100.00 |
CONT_ASSIGN | 124 | 1 | 1 | 100.00 |
ALWAYS | 128 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
123 end else begin : gen_no_stable_chks
124 1/1 assign mubi = mubi_sync;
Tests: T4 T5 T6
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_io_meas.u_calib_rdy_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37419882 |
0 |
2397 |
T4 |
884 |
789 |
0 |
3 |
T5 |
2035 |
1898 |
0 |
3 |
T6 |
2314 |
2148 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1524 |
1287 |
0 |
3 |
T30 |
1482 |
1315 |
0 |
3 |
T31 |
2102 |
2044 |
0 |
3 |
T32 |
2137 |
1944 |
0 |
3 |
T33 |
2381 |
2314 |
0 |
3 |
T34 |
1692 |
1644 |
0 |
3 |
Line Coverage for Instance : tb.dut.u_io_div2_meas.u_calib_rdy_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 3 | 3 | 100.00 |
CONT_ASSIGN | 124 | 1 | 1 | 100.00 |
ALWAYS | 128 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
123 end else begin : gen_no_stable_chks
124 1/1 assign mubi = mubi_sync;
Tests: T4 T5 T6
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_io_div2_meas.u_calib_rdy_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37419882 |
0 |
2397 |
T4 |
884 |
789 |
0 |
3 |
T5 |
2035 |
1898 |
0 |
3 |
T6 |
2314 |
2148 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1524 |
1287 |
0 |
3 |
T30 |
1482 |
1315 |
0 |
3 |
T31 |
2102 |
2044 |
0 |
3 |
T32 |
2137 |
1944 |
0 |
3 |
T33 |
2381 |
2314 |
0 |
3 |
T34 |
1692 |
1644 |
0 |
3 |
Line Coverage for Instance : tb.dut.u_io_div4_meas.u_calib_rdy_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 3 | 3 | 100.00 |
CONT_ASSIGN | 124 | 1 | 1 | 100.00 |
ALWAYS | 128 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
123 end else begin : gen_no_stable_chks
124 1/1 assign mubi = mubi_sync;
Tests: T4 T5 T6
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_io_div4_meas.u_calib_rdy_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37419882 |
0 |
2397 |
T4 |
884 |
789 |
0 |
3 |
T5 |
2035 |
1898 |
0 |
3 |
T6 |
2314 |
2148 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1524 |
1287 |
0 |
3 |
T30 |
1482 |
1315 |
0 |
3 |
T31 |
2102 |
2044 |
0 |
3 |
T32 |
2137 |
1944 |
0 |
3 |
T33 |
2381 |
2314 |
0 |
3 |
T34 |
1692 |
1644 |
0 |
3 |
Line Coverage for Instance : tb.dut.u_main_meas.u_calib_rdy_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 3 | 3 | 100.00 |
CONT_ASSIGN | 124 | 1 | 1 | 100.00 |
ALWAYS | 128 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
123 end else begin : gen_no_stable_chks
124 1/1 assign mubi = mubi_sync;
Tests: T4 T5 T6
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_main_meas.u_calib_rdy_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37419882 |
0 |
2397 |
T4 |
884 |
789 |
0 |
3 |
T5 |
2035 |
1898 |
0 |
3 |
T6 |
2314 |
2148 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1524 |
1287 |
0 |
3 |
T30 |
1482 |
1315 |
0 |
3 |
T31 |
2102 |
2044 |
0 |
3 |
T32 |
2137 |
1944 |
0 |
3 |
T33 |
2381 |
2314 |
0 |
3 |
T34 |
1692 |
1644 |
0 |
3 |
Line Coverage for Instance : tb.dut.u_usb_meas.u_calib_rdy_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 3 | 3 | 100.00 |
CONT_ASSIGN | 124 | 1 | 1 | 100.00 |
ALWAYS | 128 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
123 end else begin : gen_no_stable_chks
124 1/1 assign mubi = mubi_sync;
Tests: T4 T5 T6
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_usb_meas.u_calib_rdy_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37419882 |
0 |
2397 |
T4 |
884 |
789 |
0 |
3 |
T5 |
2035 |
1898 |
0 |
3 |
T6 |
2314 |
2148 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1524 |
1287 |
0 |
3 |
T30 |
1482 |
1315 |
0 |
3 |
T31 |
2102 |
2044 |
0 |
3 |
T32 |
2137 |
1944 |
0 |
3 |
T33 |
2381 |
2314 |
0 |
3 |
T34 |
1692 |
1644 |
0 |
3 |
Line Coverage for Instance : tb.dut.u_clk_io_div4_peri_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_clk_io_div4_peri_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clk_io_div2_peri_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_clk_io_div2_peri_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clk_io_peri_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_clk_io_peri_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clk_usb_peri_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_clk_usb_peri_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39604799 |
37426865 |
0 |
0 |
T4 |
884 |
792 |
0 |
0 |
T5 |
2035 |
1901 |
0 |
0 |
T6 |
2314 |
2151 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1524 |
1290 |
0 |
0 |
T30 |
1482 |
1318 |
0 |
0 |
T31 |
2102 |
2047 |
0 |
0 |
T32 |
2137 |
1947 |
0 |
0 |
T33 |
2381 |
2317 |
0 |
0 |
T34 |
1692 |
1647 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clk_main_aes_trans.u_idle_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 6 | 6 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
ALWAYS | 117 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
95 // hence this mux can be implemented behaviorally.
96 4/4 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Tests: T4 T5 T6 | T4 T5 T6 | T4 T5 T6 | T4 T5 T6
97 end
98
99 // Note regarding SVAs below:
100 //
101 // 1) Without the sampled rst_ni pre-condition, this may cause false assertion failures right after
102 // a reset release, since the "disable iff" condition with the rst_ni is sampled in the "observed"
103 // SV scheduler region after all assignments have been evaluated (see also LRM section 16.12, page
104 // 423). This is a simulation artifact due to reset synchronization in RTL, which releases rst_ni
105 // on the active clock edge. This causes the assertion to evaluate although the reset was actually
106 // 0 when entering this simulation cycle.
107 //
108 // 2) Similarly to 1) there can be sampling mismatches of the lc_en_i signal since that signal may
109 // originate from a different clock domain. I.e., in cases where the lc_en_i signal changes exactly
110 // at the same time that the clk_i signal rises, the SVA will not pick up that change in that clock
111 // cycle, whereas RTL will because SVAs sample values in the "preponed" region. To that end we make
112 // use of an RTL helper variable to sample the lc_en_i signal, hence ensuring that there are no
113 // sampling mismatches.
114 `ifdef INC_ASSERT
115 mubi4_t mubi_in_sva_q;
116 always_ff @(posedge clk_i) begin
117 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
118 end
119 `ASSERT(OutputIfUnstable_A, sig_unstable |-> mubi_o == {NumCopies{reset_value}})
120 `ASSERT(OutputDelay_A,
121 rst_ni |-> ##[3:4] sig_unstable || mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}})
122 `endif
123 end else begin : gen_no_stable_chks
124 assign mubi = mubi_sync;
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 mubi_in_sva_q <= mubi_i;
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Cond Coverage for Instance : tb.dut.u_clk_main_aes_trans.u_idle_sync
| Total | Covered | Percent |
Conditions | 8 | 8 | 100.00 |
Logical | 8 | 8 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[0].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[0] : gen_flops.gen_stable_chks.mubi_q[0])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[1] : gen_flops.gen_stable_chks.mubi_q[1])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[2] : gen_flops.gen_stable_chks.mubi_q[2])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[3] : gen_flops.gen_stable_chks.mubi_q[3])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
Branch Coverage for Instance : tb.dut.u_clk_main_aes_trans.u_idle_sync
| Line No. | Total | Covered | Percent |
Branches |
|
8 |
8 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_clk_main_aes_trans.u_idle_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95632432 |
0 |
2397 |
T4 |
1768 |
1582 |
0 |
3 |
T5 |
2141 |
1998 |
0 |
3 |
T6 |
2411 |
2239 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1562 |
1318 |
0 |
3 |
T30 |
1528 |
1356 |
0 |
3 |
T31 |
9137 |
8894 |
0 |
3 |
T32 |
2226 |
2026 |
0 |
3 |
T33 |
6267 |
6095 |
0 |
3 |
T34 |
9958 |
9686 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
21823 |
0 |
0 |
T4 |
1768 |
1 |
0 |
0 |
T5 |
2141 |
19 |
0 |
0 |
T6 |
2411 |
19 |
0 |
0 |
T28 |
2085 |
15 |
0 |
0 |
T29 |
1562 |
5 |
0 |
0 |
T30 |
1528 |
2 |
0 |
0 |
T31 |
9137 |
24 |
0 |
0 |
T32 |
2226 |
3 |
0 |
0 |
T33 |
6267 |
63 |
0 |
0 |
T34 |
9958 |
4 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clk_main_aes_trans.u_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_clk_main_aes_trans.u_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clk_main_hmac_trans.u_idle_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 6 | 6 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
ALWAYS | 117 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
95 // hence this mux can be implemented behaviorally.
96 4/4 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Tests: T4 T5 T6 | T4 T5 T6 | T4 T5 T6 | T4 T5 T6
97 end
98
99 // Note regarding SVAs below:
100 //
101 // 1) Without the sampled rst_ni pre-condition, this may cause false assertion failures right after
102 // a reset release, since the "disable iff" condition with the rst_ni is sampled in the "observed"
103 // SV scheduler region after all assignments have been evaluated (see also LRM section 16.12, page
104 // 423). This is a simulation artifact due to reset synchronization in RTL, which releases rst_ni
105 // on the active clock edge. This causes the assertion to evaluate although the reset was actually
106 // 0 when entering this simulation cycle.
107 //
108 // 2) Similarly to 1) there can be sampling mismatches of the lc_en_i signal since that signal may
109 // originate from a different clock domain. I.e., in cases where the lc_en_i signal changes exactly
110 // at the same time that the clk_i signal rises, the SVA will not pick up that change in that clock
111 // cycle, whereas RTL will because SVAs sample values in the "preponed" region. To that end we make
112 // use of an RTL helper variable to sample the lc_en_i signal, hence ensuring that there are no
113 // sampling mismatches.
114 `ifdef INC_ASSERT
115 mubi4_t mubi_in_sva_q;
116 always_ff @(posedge clk_i) begin
117 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
118 end
119 `ASSERT(OutputIfUnstable_A, sig_unstable |-> mubi_o == {NumCopies{reset_value}})
120 `ASSERT(OutputDelay_A,
121 rst_ni |-> ##[3:4] sig_unstable || mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}})
122 `endif
123 end else begin : gen_no_stable_chks
124 assign mubi = mubi_sync;
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 mubi_in_sva_q <= mubi_i;
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Cond Coverage for Instance : tb.dut.u_clk_main_hmac_trans.u_idle_sync
| Total | Covered | Percent |
Conditions | 8 | 8 | 100.00 |
Logical | 8 | 8 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[0].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[0] : gen_flops.gen_stable_chks.mubi_q[0])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[1] : gen_flops.gen_stable_chks.mubi_q[1])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[2] : gen_flops.gen_stable_chks.mubi_q[2])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[3] : gen_flops.gen_stable_chks.mubi_q[3])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
Branch Coverage for Instance : tb.dut.u_clk_main_hmac_trans.u_idle_sync
| Line No. | Total | Covered | Percent |
Branches |
|
8 |
8 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_clk_main_hmac_trans.u_idle_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95632432 |
0 |
2397 |
T4 |
1768 |
1582 |
0 |
3 |
T5 |
2141 |
1998 |
0 |
3 |
T6 |
2411 |
2239 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1562 |
1318 |
0 |
3 |
T30 |
1528 |
1356 |
0 |
3 |
T31 |
9137 |
8894 |
0 |
3 |
T32 |
2226 |
2026 |
0 |
3 |
T33 |
6267 |
6095 |
0 |
3 |
T34 |
9958 |
9686 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
21960 |
0 |
0 |
T4 |
1768 |
3 |
0 |
0 |
T5 |
2141 |
23 |
0 |
0 |
T6 |
2411 |
14 |
0 |
0 |
T28 |
2085 |
16 |
0 |
0 |
T29 |
1562 |
9 |
0 |
0 |
T30 |
1528 |
6 |
0 |
0 |
T31 |
9137 |
24 |
0 |
0 |
T32 |
2226 |
3 |
0 |
0 |
T33 |
6267 |
64 |
0 |
0 |
T34 |
9958 |
4 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clk_main_hmac_trans.u_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_clk_main_hmac_trans.u_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clk_main_kmac_trans.u_idle_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 6 | 6 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
ALWAYS | 117 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
95 // hence this mux can be implemented behaviorally.
96 4/4 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Tests: T4 T5 T6 | T4 T5 T6 | T4 T5 T6 | T4 T5 T6
97 end
98
99 // Note regarding SVAs below:
100 //
101 // 1) Without the sampled rst_ni pre-condition, this may cause false assertion failures right after
102 // a reset release, since the "disable iff" condition with the rst_ni is sampled in the "observed"
103 // SV scheduler region after all assignments have been evaluated (see also LRM section 16.12, page
104 // 423). This is a simulation artifact due to reset synchronization in RTL, which releases rst_ni
105 // on the active clock edge. This causes the assertion to evaluate although the reset was actually
106 // 0 when entering this simulation cycle.
107 //
108 // 2) Similarly to 1) there can be sampling mismatches of the lc_en_i signal since that signal may
109 // originate from a different clock domain. I.e., in cases where the lc_en_i signal changes exactly
110 // at the same time that the clk_i signal rises, the SVA will not pick up that change in that clock
111 // cycle, whereas RTL will because SVAs sample values in the "preponed" region. To that end we make
112 // use of an RTL helper variable to sample the lc_en_i signal, hence ensuring that there are no
113 // sampling mismatches.
114 `ifdef INC_ASSERT
115 mubi4_t mubi_in_sva_q;
116 always_ff @(posedge clk_i) begin
117 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
118 end
119 `ASSERT(OutputIfUnstable_A, sig_unstable |-> mubi_o == {NumCopies{reset_value}})
120 `ASSERT(OutputDelay_A,
121 rst_ni |-> ##[3:4] sig_unstable || mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}})
122 `endif
123 end else begin : gen_no_stable_chks
124 assign mubi = mubi_sync;
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 mubi_in_sva_q <= mubi_i;
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Cond Coverage for Instance : tb.dut.u_clk_main_kmac_trans.u_idle_sync
| Total | Covered | Percent |
Conditions | 8 | 8 | 100.00 |
Logical | 8 | 8 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[0].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[0] : gen_flops.gen_stable_chks.mubi_q[0])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[1] : gen_flops.gen_stable_chks.mubi_q[1])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[2] : gen_flops.gen_stable_chks.mubi_q[2])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[3] : gen_flops.gen_stable_chks.mubi_q[3])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
Branch Coverage for Instance : tb.dut.u_clk_main_kmac_trans.u_idle_sync
| Line No. | Total | Covered | Percent |
Branches |
|
8 |
8 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_clk_main_kmac_trans.u_idle_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95632432 |
0 |
2397 |
T4 |
1768 |
1582 |
0 |
3 |
T5 |
2141 |
1998 |
0 |
3 |
T6 |
2411 |
2239 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1562 |
1318 |
0 |
3 |
T30 |
1528 |
1356 |
0 |
3 |
T31 |
9137 |
8894 |
0 |
3 |
T32 |
2226 |
2026 |
0 |
3 |
T33 |
6267 |
6095 |
0 |
3 |
T34 |
9958 |
9686 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
21831 |
0 |
0 |
T4 |
1768 |
1 |
0 |
0 |
T5 |
2141 |
15 |
0 |
0 |
T6 |
2411 |
15 |
0 |
0 |
T28 |
2085 |
13 |
0 |
0 |
T29 |
1562 |
5 |
0 |
0 |
T30 |
1528 |
3 |
0 |
0 |
T31 |
9137 |
24 |
0 |
0 |
T32 |
2226 |
3 |
0 |
0 |
T33 |
6267 |
60 |
0 |
0 |
T34 |
9958 |
4 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clk_main_kmac_trans.u_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_clk_main_kmac_trans.u_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clk_main_otbn_trans.u_idle_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 6 | 6 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
ALWAYS | 117 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
95 // hence this mux can be implemented behaviorally.
96 4/4 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Tests: T4 T5 T6 | T4 T5 T6 | T4 T5 T6 | T4 T5 T6
97 end
98
99 // Note regarding SVAs below:
100 //
101 // 1) Without the sampled rst_ni pre-condition, this may cause false assertion failures right after
102 // a reset release, since the "disable iff" condition with the rst_ni is sampled in the "observed"
103 // SV scheduler region after all assignments have been evaluated (see also LRM section 16.12, page
104 // 423). This is a simulation artifact due to reset synchronization in RTL, which releases rst_ni
105 // on the active clock edge. This causes the assertion to evaluate although the reset was actually
106 // 0 when entering this simulation cycle.
107 //
108 // 2) Similarly to 1) there can be sampling mismatches of the lc_en_i signal since that signal may
109 // originate from a different clock domain. I.e., in cases where the lc_en_i signal changes exactly
110 // at the same time that the clk_i signal rises, the SVA will not pick up that change in that clock
111 // cycle, whereas RTL will because SVAs sample values in the "preponed" region. To that end we make
112 // use of an RTL helper variable to sample the lc_en_i signal, hence ensuring that there are no
113 // sampling mismatches.
114 `ifdef INC_ASSERT
115 mubi4_t mubi_in_sva_q;
116 always_ff @(posedge clk_i) begin
117 1/1 mubi_in_sva_q <= mubi_i;
Tests: T4 T5 T6
118 end
119 `ASSERT(OutputIfUnstable_A, sig_unstable |-> mubi_o == {NumCopies{reset_value}})
120 `ASSERT(OutputDelay_A,
121 rst_ni |-> ##[3:4] sig_unstable || mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}})
122 `endif
123 end else begin : gen_no_stable_chks
124 assign mubi = mubi_sync;
125 `ifdef INC_ASSERT
126 mubi4_t mubi_in_sva_q;
127 always_ff @(posedge clk_i) begin
128 mubi_in_sva_q <= mubi_i;
129 end
130 `ASSERT(OutputDelay_A,
131 rst_ni |-> ##3 (mubi_o == {NumCopies{$past(mubi_in_sva_q, 2)}} ||
132 $past(mubi_in_sva_q, 2) != $past(mubi_in_sva_q, 1)))
133 `endif
134 end
135 end else begin : gen_no_flops
136
137 //VCS coverage off
138 // pragma coverage off
139
140 // This unused companion logic helps remove lint errors
141 // for modules where clock and reset are used for assertions only
142 // This logic will be removed for synthesis since it is unloaded.
143 mubi4_t unused_logic;
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 if (!rst_ni) begin
146 unused_logic <= MuBi4False;
147 end else begin
148 unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 assign mubi = MuBi4Width'(mubi_i);
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Cond Coverage for Instance : tb.dut.u_clk_main_otbn_trans.u_idle_sync
| Total | Covered | Percent |
Conditions | 8 | 8 | 100.00 |
Logical | 8 | 8 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[0].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[0] : gen_flops.gen_stable_chks.mubi_q[0])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[1] : gen_flops.gen_stable_chks.mubi_q[1])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[2] : gen_flops.gen_stable_chks.mubi_q[2])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[3] : gen_flops.gen_stable_chks.mubi_q[3])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T5,T6 |
Branch Coverage for Instance : tb.dut.u_clk_main_otbn_trans.u_idle_sync
| Line No. | Total | Covered | Percent |
Branches |
|
8 |
8 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[1].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[2].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Warning: the following expressions can not be annotated
-1- ((|gen_flops.gen_stable_chks.gen_bufs_muxes[3].sig_unstable_buf)) ? ...;
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T5,T6 |
0 |
Covered |
T4,T5,T6 |
Assert Coverage for Instance : tb.dut.u_clk_main_otbn_trans.u_idle_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95632432 |
0 |
2397 |
T4 |
1768 |
1582 |
0 |
3 |
T5 |
2141 |
1998 |
0 |
3 |
T6 |
2411 |
2239 |
0 |
3 |
T28 |
2085 |
1998 |
0 |
3 |
T29 |
1562 |
1318 |
0 |
3 |
T30 |
1528 |
1356 |
0 |
3 |
T31 |
9137 |
8894 |
0 |
3 |
T32 |
2226 |
2026 |
0 |
3 |
T33 |
6267 |
6095 |
0 |
3 |
T34 |
9958 |
9686 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
21803 |
0 |
0 |
T4 |
1768 |
3 |
0 |
0 |
T5 |
2141 |
21 |
0 |
0 |
T6 |
2411 |
7 |
0 |
0 |
T28 |
2085 |
18 |
0 |
0 |
T29 |
1562 |
1 |
0 |
0 |
T30 |
1528 |
3 |
0 |
0 |
T31 |
9137 |
31 |
0 |
0 |
T32 |
2226 |
3 |
0 |
0 |
T33 |
6267 |
64 |
0 |
0 |
T34 |
9958 |
4 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clk_main_otbn_trans.u_scanmode_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 2 | 2 | 100.00 |
ALWAYS | 145 | 0 | 0 | |
CONT_ASSIGN | 155 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
144 always_ff @(posedge clk_i or negedge rst_ni) begin
145 unreachable if (!rst_ni) begin
146 unreachable unused_logic <= MuBi4False;
147 end else begin
148 unreachable unused_logic <= mubi_i;
149 end
150 end
151
152 //VCS coverage on
153 // pragma coverage on
154
155 1/1 assign mubi = MuBi4Width'(mubi_i);
Tests: T4 T5 T6
156
157 `ASSERT(OutputDelay_A, mubi_o == {NumCopies{mubi_i}})
158 end
159
160 for (genvar j = 0; j < NumCopies; j++) begin : gen_buffs
161 logic [MuBi4Width-1:0] mubi_out;
162 for (genvar k = 0; k < MuBi4Width; k++) begin : gen_bits
163 prim_buf u_prim_buf (
164 .in_i(mubi[k]),
165 .out_o(mubi_out[k])
166 );
167 end
168 1/1 assign mubi_o[j] = mubi4_t'(mubi_out);
Tests: T4 T5 T6
Assert Coverage for Instance : tb.dut.u_clk_main_otbn_trans.u_scanmode_sync
Assertion Details
NumCopiesMustBeGreaterZero_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
799 |
799 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
99737448 |
95639350 |
0 |
0 |
T4 |
1768 |
1585 |
0 |
0 |
T5 |
2141 |
2001 |
0 |
0 |
T6 |
2411 |
2242 |
0 |
0 |
T28 |
2085 |
2001 |
0 |
0 |
T29 |
1562 |
1321 |
0 |
0 |
T30 |
1528 |
1359 |
0 |
0 |
T31 |
9137 |
8897 |
0 |
0 |
T32 |
2226 |
2029 |
0 |
0 |
T33 |
6267 |
6098 |
0 |
0 |
T34 |
9958 |
9689 |
0 |
0 |