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 |
21224 |
21224 |
0 |
0 |
T4 |
28 |
28 |
0 |
0 |
T5 |
28 |
28 |
0 |
0 |
T6 |
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 |
T35 |
28 |
28 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1421734068 |
1342054336 |
0 |
0 |
T4 |
107154 |
105696 |
0 |
0 |
T5 |
88405 |
86611 |
0 |
0 |
T6 |
43890 |
41374 |
0 |
0 |
T29 |
44769 |
42590 |
0 |
0 |
T30 |
122445 |
121540 |
0 |
0 |
T31 |
36775 |
34811 |
0 |
0 |
T32 |
47017 |
42108 |
0 |
0 |
T33 |
45636 |
43932 |
0 |
0 |
T34 |
100706 |
98074 |
0 |
0 |
T35 |
41410 |
38762 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
208334406 |
193569798 |
0 |
13644 |
T4 |
10290 |
10104 |
0 |
18 |
T5 |
12300 |
12000 |
0 |
18 |
T6 |
6804 |
6330 |
0 |
18 |
T29 |
4428 |
4152 |
0 |
18 |
T30 |
11388 |
11274 |
0 |
18 |
T31 |
5754 |
5412 |
0 |
18 |
T32 |
10596 |
9360 |
0 |
18 |
T33 |
7074 |
6774 |
0 |
18 |
T34 |
6342 |
6138 |
0 |
18 |
T35 |
9468 |
8802 |
0 |
18 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
453444705 |
426438502 |
0 |
15918 |
T4 |
37464 |
36832 |
0 |
21 |
T5 |
28319 |
27649 |
0 |
21 |
T6 |
13740 |
12799 |
0 |
21 |
T29 |
15577 |
14632 |
0 |
21 |
T30 |
43039 |
42644 |
0 |
21 |
T31 |
11487 |
10802 |
0 |
21 |
T32 |
12658 |
11180 |
0 |
21 |
T33 |
14292 |
13691 |
0 |
21 |
T34 |
37098 |
35968 |
0 |
21 |
T35 |
11081 |
10289 |
0 |
21 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
453444705 |
124390 |
0 |
0 |
T4 |
27448 |
12 |
0 |
0 |
T5 |
28319 |
149 |
0 |
0 |
T6 |
13740 |
10 |
0 |
0 |
T29 |
15577 |
16 |
0 |
0 |
T30 |
43039 |
68 |
0 |
0 |
T31 |
11487 |
20 |
0 |
0 |
T32 |
12658 |
69 |
0 |
0 |
T33 |
14292 |
19 |
0 |
0 |
T34 |
37098 |
71 |
0 |
0 |
T35 |
11081 |
38 |
0 |
0 |
T53 |
0 |
33 |
0 |
0 |
T58 |
0 |
25 |
0 |
0 |
T59 |
0 |
79 |
0 |
0 |
T70 |
4658 |
0 |
0 |
0 |
T71 |
0 |
156 |
0 |
0 |
T87 |
0 |
168 |
0 |
0 |
T119 |
0 |
162 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
759954957 |
721959147 |
0 |
0 |
T4 |
59400 |
58721 |
0 |
0 |
T5 |
47786 |
46923 |
0 |
0 |
T6 |
23346 |
22206 |
0 |
0 |
T29 |
24764 |
23767 |
0 |
0 |
T30 |
68018 |
67583 |
0 |
0 |
T31 |
19534 |
18558 |
0 |
0 |
T32 |
23763 |
21529 |
0 |
0 |
T33 |
24270 |
23428 |
0 |
0 |
T34 |
57266 |
55929 |
0 |
0 |
T35 |
20861 |
19632 |
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: T5 T32 T33 | T5 T32 T33 | T5 T32 T33 | T5 T32 T33
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: T5 T32 T33
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 | T5,T32,T33 |
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 | T5,T32,T33 |
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 | T5,T32,T33 |
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 | T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
70722507 |
66560729 |
0 |
0 |
T4 |
6586 |
6479 |
0 |
0 |
T5 |
4687 |
4580 |
0 |
0 |
T6 |
2220 |
2072 |
0 |
0 |
T29 |
2729 |
2567 |
0 |
0 |
T30 |
7595 |
7529 |
0 |
0 |
T31 |
1857 |
1749 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
2310 |
2216 |
0 |
0 |
T34 |
6772 |
6569 |
0 |
0 |
T35 |
1533 |
1426 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
70722507 |
66554228 |
0 |
2274 |
T4 |
6586 |
6476 |
0 |
3 |
T5 |
4687 |
4577 |
0 |
3 |
T6 |
2220 |
2069 |
0 |
3 |
T29 |
2729 |
2564 |
0 |
3 |
T30 |
7595 |
7526 |
0 |
3 |
T31 |
1857 |
1746 |
0 |
3 |
T32 |
1766 |
1560 |
0 |
3 |
T33 |
2310 |
2213 |
0 |
3 |
T34 |
6772 |
6566 |
0 |
3 |
T35 |
1533 |
1423 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
70722507 |
17715 |
0 |
0 |
T5 |
4687 |
38 |
0 |
0 |
T6 |
2220 |
0 |
0 |
0 |
T29 |
2729 |
0 |
0 |
0 |
T30 |
7595 |
0 |
0 |
0 |
T31 |
1857 |
0 |
0 |
0 |
T32 |
1766 |
18 |
0 |
0 |
T33 |
2310 |
3 |
0 |
0 |
T34 |
6772 |
15 |
0 |
0 |
T35 |
1533 |
0 |
0 |
0 |
T53 |
0 |
13 |
0 |
0 |
T58 |
0 |
12 |
0 |
0 |
T59 |
0 |
38 |
0 |
0 |
T70 |
1542 |
0 |
0 |
0 |
T71 |
0 |
83 |
0 |
0 |
T87 |
0 |
51 |
0 |
0 |
T119 |
0 |
78 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
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: T5 T32 T33 | T5 T32 T33 | T5 T32 T33 | T5 T32 T33
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: T5 T32 T33
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 | T5,T32,T33 |
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 | T5,T32,T33 |
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 | T5,T32,T33 |
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 | T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32261633 |
0 |
2274 |
T4 |
1715 |
1684 |
0 |
3 |
T5 |
2050 |
2000 |
0 |
3 |
T6 |
1134 |
1055 |
0 |
3 |
T29 |
738 |
692 |
0 |
3 |
T30 |
1898 |
1879 |
0 |
3 |
T31 |
959 |
902 |
0 |
3 |
T32 |
1766 |
1560 |
0 |
3 |
T33 |
1179 |
1129 |
0 |
3 |
T34 |
1057 |
1023 |
0 |
3 |
T35 |
1578 |
1467 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
10740 |
0 |
0 |
T5 |
2050 |
24 |
0 |
0 |
T6 |
1134 |
0 |
0 |
0 |
T29 |
738 |
0 |
0 |
0 |
T30 |
1898 |
0 |
0 |
0 |
T31 |
959 |
0 |
0 |
0 |
T32 |
1766 |
6 |
0 |
0 |
T33 |
1179 |
4 |
0 |
0 |
T34 |
1057 |
18 |
0 |
0 |
T35 |
1578 |
0 |
0 |
0 |
T53 |
0 |
12 |
0 |
0 |
T58 |
0 |
7 |
0 |
0 |
T59 |
0 |
2 |
0 |
0 |
T70 |
1558 |
0 |
0 |
0 |
T71 |
0 |
32 |
0 |
0 |
T87 |
0 |
67 |
0 |
0 |
T119 |
0 |
50 |
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: T5 T32 T33 | T5 T32 T33 | T5 T32 T33 | T5 T32 T33
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: T5 T32 T33
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 | T5,T32,T33 |
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 | T5,T32,T33 |
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 | T5,T32,T33 |
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 | T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
T5,T32,T33 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32261633 |
0 |
2274 |
T4 |
1715 |
1684 |
0 |
3 |
T5 |
2050 |
2000 |
0 |
3 |
T6 |
1134 |
1055 |
0 |
3 |
T29 |
738 |
692 |
0 |
3 |
T30 |
1898 |
1879 |
0 |
3 |
T31 |
959 |
902 |
0 |
3 |
T32 |
1766 |
1560 |
0 |
3 |
T33 |
1179 |
1129 |
0 |
3 |
T34 |
1057 |
1023 |
0 |
3 |
T35 |
1578 |
1467 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
12336 |
0 |
0 |
T5 |
2050 |
36 |
0 |
0 |
T6 |
1134 |
0 |
0 |
0 |
T29 |
738 |
0 |
0 |
0 |
T30 |
1898 |
0 |
0 |
0 |
T31 |
959 |
0 |
0 |
0 |
T32 |
1766 |
19 |
0 |
0 |
T33 |
1179 |
2 |
0 |
0 |
T34 |
1057 |
16 |
0 |
0 |
T35 |
1578 |
0 |
0 |
0 |
T53 |
0 |
8 |
0 |
0 |
T58 |
0 |
6 |
0 |
0 |
T59 |
0 |
39 |
0 |
0 |
T70 |
1558 |
0 |
0 |
0 |
T71 |
0 |
41 |
0 |
0 |
T87 |
0 |
50 |
0 |
0 |
T119 |
0 |
34 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
76090055 |
0 |
0 |
T4 |
6862 |
6836 |
0 |
0 |
T5 |
4883 |
4828 |
0 |
0 |
T6 |
2313 |
2286 |
0 |
0 |
T29 |
2843 |
2817 |
0 |
0 |
T30 |
7912 |
7886 |
0 |
0 |
T31 |
1928 |
1844 |
0 |
0 |
T32 |
1840 |
1771 |
0 |
0 |
T33 |
2406 |
2337 |
0 |
0 |
T34 |
7053 |
6927 |
0 |
0 |
T35 |
1598 |
1543 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
76090055 |
0 |
0 |
T4 |
6862 |
6836 |
0 |
0 |
T5 |
4883 |
4828 |
0 |
0 |
T6 |
2313 |
2286 |
0 |
0 |
T29 |
2843 |
2817 |
0 |
0 |
T30 |
7912 |
7886 |
0 |
0 |
T31 |
1928 |
1844 |
0 |
0 |
T32 |
1840 |
1771 |
0 |
0 |
T33 |
2406 |
2337 |
0 |
0 |
T34 |
7053 |
6927 |
0 |
0 |
T35 |
1598 |
1543 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
70722507 |
68647888 |
0 |
0 |
T4 |
6586 |
6561 |
0 |
0 |
T5 |
4687 |
4635 |
0 |
0 |
T6 |
2220 |
2195 |
0 |
0 |
T29 |
2729 |
2704 |
0 |
0 |
T30 |
7595 |
7570 |
0 |
0 |
T31 |
1857 |
1777 |
0 |
0 |
T32 |
1766 |
1700 |
0 |
0 |
T33 |
2310 |
2244 |
0 |
0 |
T34 |
6772 |
6651 |
0 |
0 |
T35 |
1533 |
1481 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
70722507 |
68647888 |
0 |
0 |
T4 |
6586 |
6561 |
0 |
0 |
T5 |
4687 |
4635 |
0 |
0 |
T6 |
2220 |
2195 |
0 |
0 |
T29 |
2729 |
2704 |
0 |
0 |
T30 |
7595 |
7570 |
0 |
0 |
T31 |
1857 |
1777 |
0 |
0 |
T32 |
1766 |
1700 |
0 |
0 |
T33 |
2310 |
2244 |
0 |
0 |
T34 |
6772 |
6651 |
0 |
0 |
T35 |
1533 |
1481 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34481633 |
34481633 |
0 |
0 |
T4 |
3281 |
3281 |
0 |
0 |
T5 |
2695 |
2695 |
0 |
0 |
T6 |
1098 |
1098 |
0 |
0 |
T29 |
1352 |
1352 |
0 |
0 |
T30 |
3785 |
3785 |
0 |
0 |
T31 |
889 |
889 |
0 |
0 |
T32 |
879 |
879 |
0 |
0 |
T33 |
1135 |
1135 |
0 |
0 |
T34 |
3667 |
3667 |
0 |
0 |
T35 |
741 |
741 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34481633 |
34481633 |
0 |
0 |
T4 |
3281 |
3281 |
0 |
0 |
T5 |
2695 |
2695 |
0 |
0 |
T6 |
1098 |
1098 |
0 |
0 |
T29 |
1352 |
1352 |
0 |
0 |
T30 |
3785 |
3785 |
0 |
0 |
T31 |
889 |
889 |
0 |
0 |
T32 |
879 |
879 |
0 |
0 |
T33 |
1135 |
1135 |
0 |
0 |
T34 |
3667 |
3667 |
0 |
0 |
T35 |
741 |
741 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
17240419 |
17240419 |
0 |
0 |
T4 |
1640 |
1640 |
0 |
0 |
T5 |
1345 |
1345 |
0 |
0 |
T6 |
549 |
549 |
0 |
0 |
T29 |
676 |
676 |
0 |
0 |
T30 |
1893 |
1893 |
0 |
0 |
T31 |
444 |
444 |
0 |
0 |
T32 |
439 |
439 |
0 |
0 |
T33 |
567 |
567 |
0 |
0 |
T34 |
1834 |
1834 |
0 |
0 |
T35 |
370 |
370 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
17240419 |
17240419 |
0 |
0 |
T4 |
1640 |
1640 |
0 |
0 |
T5 |
1345 |
1345 |
0 |
0 |
T6 |
549 |
549 |
0 |
0 |
T29 |
676 |
676 |
0 |
0 |
T30 |
1893 |
1893 |
0 |
0 |
T31 |
444 |
444 |
0 |
0 |
T32 |
439 |
439 |
0 |
0 |
T33 |
567 |
567 |
0 |
0 |
T34 |
1834 |
1834 |
0 |
0 |
T35 |
370 |
370 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
37579247 |
36501446 |
0 |
0 |
T4 |
3293 |
3281 |
0 |
0 |
T5 |
2344 |
2318 |
0 |
0 |
T6 |
1110 |
1098 |
0 |
0 |
T29 |
1364 |
1352 |
0 |
0 |
T30 |
3797 |
3785 |
0 |
0 |
T31 |
950 |
910 |
0 |
0 |
T32 |
883 |
850 |
0 |
0 |
T33 |
1154 |
1121 |
0 |
0 |
T34 |
3386 |
3326 |
0 |
0 |
T35 |
759 |
733 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
37579247 |
36501446 |
0 |
0 |
T4 |
3293 |
3281 |
0 |
0 |
T5 |
2344 |
2318 |
0 |
0 |
T6 |
1110 |
1098 |
0 |
0 |
T29 |
1364 |
1352 |
0 |
0 |
T30 |
3797 |
3785 |
0 |
0 |
T31 |
950 |
910 |
0 |
0 |
T32 |
883 |
850 |
0 |
0 |
T33 |
1154 |
1121 |
0 |
0 |
T34 |
3386 |
3326 |
0 |
0 |
T35 |
759 |
733 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32261633 |
0 |
2274 |
T4 |
1715 |
1684 |
0 |
3 |
T5 |
2050 |
2000 |
0 |
3 |
T6 |
1134 |
1055 |
0 |
3 |
T29 |
738 |
692 |
0 |
3 |
T30 |
1898 |
1879 |
0 |
3 |
T31 |
959 |
902 |
0 |
3 |
T32 |
1766 |
1560 |
0 |
3 |
T33 |
1179 |
1129 |
0 |
3 |
T34 |
1057 |
1023 |
0 |
3 |
T35 |
1578 |
1467 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32261633 |
0 |
2274 |
T4 |
1715 |
1684 |
0 |
3 |
T5 |
2050 |
2000 |
0 |
3 |
T6 |
1134 |
1055 |
0 |
3 |
T29 |
738 |
692 |
0 |
3 |
T30 |
1898 |
1879 |
0 |
3 |
T31 |
959 |
902 |
0 |
3 |
T32 |
1766 |
1560 |
0 |
3 |
T33 |
1179 |
1129 |
0 |
3 |
T34 |
1057 |
1023 |
0 |
3 |
T35 |
1578 |
1467 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32261633 |
0 |
2274 |
T4 |
1715 |
1684 |
0 |
3 |
T5 |
2050 |
2000 |
0 |
3 |
T6 |
1134 |
1055 |
0 |
3 |
T29 |
738 |
692 |
0 |
3 |
T30 |
1898 |
1879 |
0 |
3 |
T31 |
959 |
902 |
0 |
3 |
T32 |
1766 |
1560 |
0 |
3 |
T33 |
1179 |
1129 |
0 |
3 |
T34 |
1057 |
1023 |
0 |
3 |
T35 |
1578 |
1467 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32261633 |
0 |
2274 |
T4 |
1715 |
1684 |
0 |
3 |
T5 |
2050 |
2000 |
0 |
3 |
T6 |
1134 |
1055 |
0 |
3 |
T29 |
738 |
692 |
0 |
3 |
T30 |
1898 |
1879 |
0 |
3 |
T31 |
959 |
902 |
0 |
3 |
T32 |
1766 |
1560 |
0 |
3 |
T33 |
1179 |
1129 |
0 |
3 |
T34 |
1057 |
1023 |
0 |
3 |
T35 |
1578 |
1467 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32261633 |
0 |
2274 |
T4 |
1715 |
1684 |
0 |
3 |
T5 |
2050 |
2000 |
0 |
3 |
T6 |
1134 |
1055 |
0 |
3 |
T29 |
738 |
692 |
0 |
3 |
T30 |
1898 |
1879 |
0 |
3 |
T31 |
959 |
902 |
0 |
3 |
T32 |
1766 |
1560 |
0 |
3 |
T33 |
1179 |
1129 |
0 |
3 |
T34 |
1057 |
1023 |
0 |
3 |
T35 |
1578 |
1467 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32261633 |
0 |
2274 |
T4 |
1715 |
1684 |
0 |
3 |
T5 |
2050 |
2000 |
0 |
3 |
T6 |
1134 |
1055 |
0 |
3 |
T29 |
738 |
692 |
0 |
3 |
T30 |
1898 |
1879 |
0 |
3 |
T31 |
959 |
902 |
0 |
3 |
T32 |
1766 |
1560 |
0 |
3 |
T33 |
1179 |
1129 |
0 |
3 |
T34 |
1057 |
1023 |
0 |
3 |
T35 |
1578 |
1467 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
34722401 |
32268377 |
0 |
0 |
T4 |
1715 |
1687 |
0 |
0 |
T5 |
2050 |
2003 |
0 |
0 |
T6 |
1134 |
1058 |
0 |
0 |
T29 |
738 |
695 |
0 |
0 |
T30 |
1898 |
1882 |
0 |
0 |
T31 |
959 |
905 |
0 |
0 |
T32 |
1766 |
1563 |
0 |
0 |
T33 |
1179 |
1132 |
0 |
0 |
T34 |
1057 |
1026 |
0 |
0 |
T35 |
1578 |
1470 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73840252 |
0 |
2274 |
T4 |
6862 |
6747 |
0 |
3 |
T5 |
4883 |
4768 |
0 |
3 |
T6 |
2313 |
2155 |
0 |
3 |
T29 |
2843 |
2671 |
0 |
3 |
T30 |
7912 |
7840 |
0 |
3 |
T31 |
1928 |
1813 |
0 |
3 |
T32 |
1840 |
1625 |
0 |
3 |
T33 |
2406 |
2305 |
0 |
3 |
T34 |
7053 |
6839 |
0 |
3 |
T35 |
1598 |
1483 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
20866 |
0 |
0 |
T4 |
6862 |
3 |
0 |
0 |
T5 |
4883 |
12 |
0 |
0 |
T6 |
2313 |
3 |
0 |
0 |
T29 |
2843 |
5 |
0 |
0 |
T30 |
7912 |
13 |
0 |
0 |
T31 |
1928 |
5 |
0 |
0 |
T32 |
1840 |
9 |
0 |
0 |
T33 |
2406 |
3 |
0 |
0 |
T34 |
7053 |
5 |
0 |
0 |
T35 |
1598 |
12 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73840252 |
0 |
2274 |
T4 |
6862 |
6747 |
0 |
3 |
T5 |
4883 |
4768 |
0 |
3 |
T6 |
2313 |
2155 |
0 |
3 |
T29 |
2843 |
2671 |
0 |
3 |
T30 |
7912 |
7840 |
0 |
3 |
T31 |
1928 |
1813 |
0 |
3 |
T32 |
1840 |
1625 |
0 |
3 |
T33 |
2406 |
2305 |
0 |
3 |
T34 |
7053 |
6839 |
0 |
3 |
T35 |
1598 |
1483 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
20953 |
0 |
0 |
T4 |
6862 |
3 |
0 |
0 |
T5 |
4883 |
10 |
0 |
0 |
T6 |
2313 |
1 |
0 |
0 |
T29 |
2843 |
3 |
0 |
0 |
T30 |
7912 |
23 |
0 |
0 |
T31 |
1928 |
5 |
0 |
0 |
T32 |
1840 |
5 |
0 |
0 |
T33 |
2406 |
3 |
0 |
0 |
T34 |
7053 |
5 |
0 |
0 |
T35 |
1598 |
9 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73840252 |
0 |
2274 |
T4 |
6862 |
6747 |
0 |
3 |
T5 |
4883 |
4768 |
0 |
3 |
T6 |
2313 |
2155 |
0 |
3 |
T29 |
2843 |
2671 |
0 |
3 |
T30 |
7912 |
7840 |
0 |
3 |
T31 |
1928 |
1813 |
0 |
3 |
T32 |
1840 |
1625 |
0 |
3 |
T33 |
2406 |
2305 |
0 |
3 |
T34 |
7053 |
6839 |
0 |
3 |
T35 |
1598 |
1483 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
20765 |
0 |
0 |
T4 |
6862 |
3 |
0 |
0 |
T5 |
4883 |
12 |
0 |
0 |
T6 |
2313 |
5 |
0 |
0 |
T29 |
2843 |
5 |
0 |
0 |
T30 |
7912 |
13 |
0 |
0 |
T31 |
1928 |
5 |
0 |
0 |
T32 |
1840 |
5 |
0 |
0 |
T33 |
2406 |
3 |
0 |
0 |
T34 |
7053 |
5 |
0 |
0 |
T35 |
1598 |
5 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73840252 |
0 |
2274 |
T4 |
6862 |
6747 |
0 |
3 |
T5 |
4883 |
4768 |
0 |
3 |
T6 |
2313 |
2155 |
0 |
3 |
T29 |
2843 |
2671 |
0 |
3 |
T30 |
7912 |
7840 |
0 |
3 |
T31 |
1928 |
1813 |
0 |
3 |
T32 |
1840 |
1625 |
0 |
3 |
T33 |
2406 |
2305 |
0 |
3 |
T34 |
7053 |
6839 |
0 |
3 |
T35 |
1598 |
1483 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
21015 |
0 |
0 |
T4 |
6862 |
3 |
0 |
0 |
T5 |
4883 |
17 |
0 |
0 |
T6 |
2313 |
1 |
0 |
0 |
T29 |
2843 |
3 |
0 |
0 |
T30 |
7912 |
19 |
0 |
0 |
T31 |
1928 |
5 |
0 |
0 |
T32 |
1840 |
7 |
0 |
0 |
T33 |
2406 |
1 |
0 |
0 |
T34 |
7053 |
7 |
0 |
0 |
T35 |
1598 |
12 |
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 |
758 |
758 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
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 |
T35 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
78319349 |
73846861 |
0 |
0 |
T4 |
6862 |
6750 |
0 |
0 |
T5 |
4883 |
4771 |
0 |
0 |
T6 |
2313 |
2158 |
0 |
0 |
T29 |
2843 |
2674 |
0 |
0 |
T30 |
7912 |
7843 |
0 |
0 |
T31 |
1928 |
1816 |
0 |
0 |
T32 |
1840 |
1628 |
0 |
0 |
T33 |
2406 |
2308 |
0 |
0 |
T34 |
7053 |
6842 |
0 |
0 |
T35 |
1598 |
1486 |
0 |
0 |