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 |
22540 |
22540 |
0 |
0 |
T4 |
28 |
28 |
0 |
0 |
T5 |
28 |
28 |
0 |
0 |
T6 |
28 |
28 |
0 |
0 |
T32 |
28 |
28 |
0 |
0 |
T33 |
28 |
28 |
0 |
0 |
T34 |
28 |
28 |
0 |
0 |
T35 |
28 |
28 |
0 |
0 |
T36 |
28 |
28 |
0 |
0 |
T37 |
28 |
28 |
0 |
0 |
T38 |
28 |
28 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1449661079 |
1364742473 |
0 |
0 |
T4 |
39486 |
37515 |
0 |
0 |
T5 |
66867 |
64912 |
0 |
0 |
T6 |
43404 |
39280 |
0 |
0 |
T32 |
83701 |
81550 |
0 |
0 |
T33 |
37738 |
33551 |
0 |
0 |
T34 |
56069 |
50928 |
0 |
0 |
T35 |
100962 |
97678 |
0 |
0 |
T36 |
97708 |
94578 |
0 |
0 |
T37 |
472869 |
471985 |
0 |
0 |
T38 |
739778 |
737878 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
234376794 |
218006244 |
0 |
14490 |
T4 |
8868 |
8370 |
0 |
18 |
T5 |
6216 |
5982 |
0 |
18 |
T6 |
9804 |
8814 |
0 |
18 |
T32 |
8034 |
7770 |
0 |
18 |
T33 |
8760 |
7728 |
0 |
18 |
T34 |
12882 |
11592 |
0 |
18 |
T35 |
9660 |
9288 |
0 |
18 |
T36 |
9330 |
8970 |
0 |
18 |
T37 |
11016 |
10980 |
0 |
18 |
T38 |
17310 |
17244 |
0 |
18 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
448801583 |
420532421 |
0 |
16905 |
T4 |
10598 |
10001 |
0 |
21 |
T5 |
23509 |
22648 |
0 |
21 |
T6 |
11710 |
10527 |
0 |
21 |
T32 |
29268 |
28327 |
0 |
21 |
T33 |
10040 |
8843 |
0 |
21 |
T34 |
14944 |
13447 |
0 |
21 |
T35 |
35187 |
33857 |
0 |
21 |
T36 |
33971 |
32715 |
0 |
21 |
T37 |
185936 |
185497 |
0 |
21 |
T38 |
292021 |
291145 |
0 |
21 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
448801583 |
125527 |
0 |
0 |
T4 |
10598 |
80 |
0 |
0 |
T5 |
23509 |
16 |
0 |
0 |
T6 |
11710 |
82 |
0 |
0 |
T22 |
0 |
105 |
0 |
0 |
T24 |
0 |
9 |
0 |
0 |
T25 |
0 |
37 |
0 |
0 |
T27 |
0 |
9 |
0 |
0 |
T32 |
29268 |
40 |
0 |
0 |
T33 |
10040 |
20 |
0 |
0 |
T34 |
14944 |
121 |
0 |
0 |
T35 |
35187 |
152 |
0 |
0 |
T36 |
33971 |
188 |
0 |
0 |
T37 |
185936 |
154 |
0 |
0 |
T38 |
292021 |
238 |
0 |
0 |
T103 |
0 |
165 |
0 |
0 |
T130 |
0 |
51 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
766482702 |
726114954 |
0 |
0 |
T4 |
20020 |
19105 |
0 |
0 |
T5 |
37142 |
36243 |
0 |
0 |
T6 |
21890 |
19900 |
0 |
0 |
T32 |
46399 |
45414 |
0 |
0 |
T33 |
18938 |
16941 |
0 |
0 |
T34 |
28243 |
25850 |
0 |
0 |
T35 |
56115 |
54494 |
0 |
0 |
T36 |
54407 |
52854 |
0 |
0 |
T37 |
275917 |
275469 |
0 |
0 |
T38 |
430447 |
429450 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_io_step_down_req_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 6 | 6 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
ALWAYS | 117 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
95 // hence this mux can be implemented behaviorally.
96 4/4 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Tests: T4 T34 T35 | T4 T34 T35 | T4 T34 T35 | T4 T34 T35
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 T34 T35
Cond Coverage for Instance : tb.dut.u_io_step_down_req_sync
| Total | Covered | Percent |
Conditions | 8 | 8 | 100.00 |
Logical | 8 | 8 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[0].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[0] : gen_flops.gen_stable_chks.mubi_q[0])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T34,T35 |
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,T34,T35 |
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,T34,T35 |
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,T34,T35 |
Branch Coverage for Instance : tb.dut.u_io_step_down_req_sync
| Line No. | Total | Covered | Percent |
Branches |
|
8 |
8 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T34,T35 |
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,T34,T35 |
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,T34,T35 |
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,T34,T35 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
67850313 |
63571675 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
4149 |
4001 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
5146 |
4984 |
0 |
0 |
T33 |
1372 |
1210 |
0 |
0 |
T34 |
2062 |
1858 |
0 |
0 |
T35 |
6187 |
5956 |
0 |
0 |
T36 |
5973 |
5756 |
0 |
0 |
T37 |
35276 |
35196 |
0 |
0 |
T38 |
55403 |
55240 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
67850313 |
63564949 |
0 |
2415 |
T4 |
1478 |
1395 |
0 |
3 |
T5 |
4149 |
3998 |
0 |
3 |
T6 |
1634 |
1469 |
0 |
3 |
T32 |
5146 |
4981 |
0 |
3 |
T33 |
1372 |
1207 |
0 |
3 |
T34 |
2062 |
1855 |
0 |
3 |
T35 |
6187 |
5953 |
0 |
3 |
T36 |
5973 |
5753 |
0 |
3 |
T37 |
35276 |
35193 |
0 |
3 |
T38 |
55403 |
55237 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
67850313 |
17708 |
0 |
0 |
T4 |
1478 |
19 |
0 |
0 |
T5 |
4149 |
0 |
0 |
0 |
T6 |
1634 |
0 |
0 |
0 |
T22 |
0 |
49 |
0 |
0 |
T24 |
0 |
4 |
0 |
0 |
T25 |
0 |
20 |
0 |
0 |
T27 |
0 |
4 |
0 |
0 |
T32 |
5146 |
0 |
0 |
0 |
T33 |
1372 |
0 |
0 |
0 |
T34 |
2062 |
37 |
0 |
0 |
T35 |
6187 |
64 |
0 |
0 |
T36 |
5973 |
49 |
0 |
0 |
T37 |
35276 |
38 |
0 |
0 |
T38 |
55403 |
0 |
0 |
0 |
T103 |
0 |
54 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clkmgr_byp.u_io_ack_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 6 | 6 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
ALWAYS | 117 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
95 // hence this mux can be implemented behaviorally.
96 4/4 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Tests: T4 T34 T35 | T4 T34 T35 | T4 T34 T35 | T4 T34 T35
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 T34 T35
Cond Coverage for Instance : tb.dut.u_clkmgr_byp.u_io_ack_sync
| Total | Covered | Percent |
Conditions | 8 | 8 | 100.00 |
Logical | 8 | 8 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[0].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[0] : gen_flops.gen_stable_chks.mubi_q[0])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T34,T35 |
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,T34,T35 |
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,T34,T35 |
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,T34,T35 |
Branch Coverage for Instance : tb.dut.u_clkmgr_byp.u_io_ack_sync
| Line No. | Total | Covered | Percent |
Branches |
|
8 |
8 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T34,T35 |
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,T34,T35 |
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,T34,T35 |
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,T34,T35 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36334374 |
0 |
2415 |
T4 |
1478 |
1395 |
0 |
3 |
T5 |
1036 |
997 |
0 |
3 |
T6 |
1634 |
1469 |
0 |
3 |
T32 |
1339 |
1295 |
0 |
3 |
T33 |
1460 |
1288 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
1610 |
1548 |
0 |
3 |
T36 |
1555 |
1495 |
0 |
3 |
T37 |
1836 |
1830 |
0 |
3 |
T38 |
2885 |
2874 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
10675 |
0 |
0 |
T4 |
1478 |
11 |
0 |
0 |
T5 |
1036 |
0 |
0 |
0 |
T6 |
1634 |
0 |
0 |
0 |
T22 |
0 |
32 |
0 |
0 |
T24 |
0 |
3 |
0 |
0 |
T27 |
0 |
4 |
0 |
0 |
T32 |
1339 |
0 |
0 |
0 |
T33 |
1460 |
0 |
0 |
0 |
T34 |
2147 |
21 |
0 |
0 |
T35 |
1610 |
22 |
0 |
0 |
T36 |
1555 |
55 |
0 |
0 |
T37 |
1836 |
3 |
0 |
0 |
T38 |
2885 |
0 |
0 |
0 |
T103 |
0 |
64 |
0 |
0 |
T130 |
0 |
51 |
0 |
0 |
Line Coverage for Instance : tb.dut.u_clkmgr_byp.u_all_ack_sync
| Line No. | Total | Covered | Percent |
TOTAL | | 6 | 6 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
CONT_ASSIGN | 96 | 1 | 1 | 100.00 |
ALWAYS | 117 | 1 | 1 | 100.00 |
CONT_ASSIGN | 168 | 1 | 1 | 100.00 |
95 // hence this mux can be implemented behaviorally.
96 4/4 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
Tests: T4 T34 T35 | T4 T34 T35 | T4 T34 T35 | T4 T34 T35
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 T34 T35
Cond Coverage for Instance : tb.dut.u_clkmgr_byp.u_all_ack_sync
| Total | Covered | Percent |
Conditions | 8 | 8 | 100.00 |
Logical | 8 | 8 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 96
EXPRESSION (((|gen_flops.gen_stable_chks.gen_bufs_muxes[0].sig_unstable_buf)) ? gen_flops.gen_stable_chks.reset_value[0] : gen_flops.gen_stable_chks.mubi_q[0])
--------------------------------1--------------------------------
-1- | Status | Tests |
0 | Covered | T4,T5,T6 |
1 | Covered | T4,T34,T35 |
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,T34,T35 |
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,T34,T35 |
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,T34,T35 |
Branch Coverage for Instance : tb.dut.u_clkmgr_byp.u_all_ack_sync
| Line No. | Total | Covered | Percent |
Branches |
|
8 |
8 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
TERNARY |
96 |
2 |
2 |
100.00 |
96 assign mubi[k] = (|sig_unstable_buf) ? reset_value[k] : mubi_q[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T4,T34,T35 |
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,T34,T35 |
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,T34,T35 |
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,T34,T35 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36334374 |
0 |
2415 |
T4 |
1478 |
1395 |
0 |
3 |
T5 |
1036 |
997 |
0 |
3 |
T6 |
1634 |
1469 |
0 |
3 |
T32 |
1339 |
1295 |
0 |
3 |
T33 |
1460 |
1288 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
1610 |
1548 |
0 |
3 |
T36 |
1555 |
1495 |
0 |
3 |
T37 |
1836 |
1830 |
0 |
3 |
T38 |
2885 |
2874 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
12370 |
0 |
0 |
T4 |
1478 |
19 |
0 |
0 |
T5 |
1036 |
0 |
0 |
0 |
T6 |
1634 |
0 |
0 |
0 |
T22 |
0 |
24 |
0 |
0 |
T24 |
0 |
2 |
0 |
0 |
T25 |
0 |
17 |
0 |
0 |
T27 |
0 |
1 |
0 |
0 |
T32 |
1339 |
0 |
0 |
0 |
T33 |
1460 |
0 |
0 |
0 |
T34 |
2147 |
18 |
0 |
0 |
T35 |
1610 |
22 |
0 |
0 |
T36 |
1555 |
31 |
0 |
0 |
T37 |
1836 |
43 |
0 |
0 |
T38 |
2885 |
0 |
0 |
0 |
T103 |
0 |
47 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
73397848 |
0 |
0 |
T4 |
1541 |
1500 |
0 |
0 |
T5 |
4322 |
4296 |
0 |
0 |
T6 |
1702 |
1562 |
0 |
0 |
T32 |
5361 |
5335 |
0 |
0 |
T33 |
1437 |
1311 |
0 |
0 |
T34 |
2147 |
2035 |
0 |
0 |
T35 |
6445 |
6319 |
0 |
0 |
T36 |
6222 |
6096 |
0 |
0 |
T37 |
36747 |
36707 |
0 |
0 |
T38 |
57712 |
57600 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
73397848 |
0 |
0 |
T4 |
1541 |
1500 |
0 |
0 |
T5 |
4322 |
4296 |
0 |
0 |
T6 |
1702 |
1562 |
0 |
0 |
T32 |
5361 |
5335 |
0 |
0 |
T33 |
1437 |
1311 |
0 |
0 |
T34 |
2147 |
2035 |
0 |
0 |
T35 |
6445 |
6319 |
0 |
0 |
T36 |
6222 |
6096 |
0 |
0 |
T37 |
36747 |
36707 |
0 |
0 |
T38 |
57712 |
57600 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
67850313 |
65717444 |
0 |
0 |
T4 |
1478 |
1439 |
0 |
0 |
T5 |
4149 |
4124 |
0 |
0 |
T6 |
1634 |
1499 |
0 |
0 |
T32 |
5146 |
5121 |
0 |
0 |
T33 |
1372 |
1251 |
0 |
0 |
T34 |
2062 |
1954 |
0 |
0 |
T35 |
6187 |
6066 |
0 |
0 |
T36 |
5973 |
5852 |
0 |
0 |
T37 |
35276 |
35237 |
0 |
0 |
T38 |
55403 |
55295 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
67850313 |
65717444 |
0 |
0 |
T4 |
1478 |
1439 |
0 |
0 |
T5 |
4149 |
4124 |
0 |
0 |
T6 |
1634 |
1499 |
0 |
0 |
T32 |
5146 |
5121 |
0 |
0 |
T33 |
1372 |
1251 |
0 |
0 |
T34 |
2062 |
1954 |
0 |
0 |
T35 |
6187 |
6066 |
0 |
0 |
T36 |
5973 |
5852 |
0 |
0 |
T37 |
35276 |
35237 |
0 |
0 |
T38 |
55403 |
55295 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
33014455 |
33014455 |
0 |
0 |
T4 |
820 |
820 |
0 |
0 |
T5 |
2062 |
2062 |
0 |
0 |
T6 |
750 |
750 |
0 |
0 |
T32 |
2561 |
2561 |
0 |
0 |
T33 |
626 |
626 |
0 |
0 |
T34 |
1023 |
1023 |
0 |
0 |
T35 |
3300 |
3300 |
0 |
0 |
T36 |
3339 |
3339 |
0 |
0 |
T37 |
18835 |
18835 |
0 |
0 |
T38 |
27648 |
27648 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
33014455 |
33014455 |
0 |
0 |
T4 |
820 |
820 |
0 |
0 |
T5 |
2062 |
2062 |
0 |
0 |
T6 |
750 |
750 |
0 |
0 |
T32 |
2561 |
2561 |
0 |
0 |
T33 |
626 |
626 |
0 |
0 |
T34 |
1023 |
1023 |
0 |
0 |
T35 |
3300 |
3300 |
0 |
0 |
T36 |
3339 |
3339 |
0 |
0 |
T37 |
18835 |
18835 |
0 |
0 |
T38 |
27648 |
27648 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
16506839 |
16506839 |
0 |
0 |
T4 |
410 |
410 |
0 |
0 |
T5 |
1031 |
1031 |
0 |
0 |
T6 |
375 |
375 |
0 |
0 |
T32 |
1280 |
1280 |
0 |
0 |
T33 |
313 |
313 |
0 |
0 |
T34 |
511 |
511 |
0 |
0 |
T35 |
1649 |
1649 |
0 |
0 |
T36 |
1669 |
1669 |
0 |
0 |
T37 |
9416 |
9416 |
0 |
0 |
T38 |
13824 |
13824 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
16506839 |
16506839 |
0 |
0 |
T4 |
410 |
410 |
0 |
0 |
T5 |
1031 |
1031 |
0 |
0 |
T6 |
375 |
375 |
0 |
0 |
T32 |
1280 |
1280 |
0 |
0 |
T33 |
313 |
313 |
0 |
0 |
T34 |
511 |
511 |
0 |
0 |
T35 |
1649 |
1649 |
0 |
0 |
T36 |
1669 |
1669 |
0 |
0 |
T37 |
9416 |
9416 |
0 |
0 |
T38 |
13824 |
13824 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
36202211 |
35105016 |
0 |
0 |
T4 |
739 |
720 |
0 |
0 |
T5 |
2074 |
2062 |
0 |
0 |
T6 |
817 |
750 |
0 |
0 |
T32 |
2573 |
2561 |
0 |
0 |
T33 |
682 |
622 |
0 |
0 |
T34 |
1030 |
977 |
0 |
0 |
T35 |
3094 |
3034 |
0 |
0 |
T36 |
2986 |
2926 |
0 |
0 |
T37 |
17639 |
17620 |
0 |
0 |
T38 |
27702 |
27649 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
36202211 |
35105016 |
0 |
0 |
T4 |
739 |
720 |
0 |
0 |
T5 |
2074 |
2062 |
0 |
0 |
T6 |
817 |
750 |
0 |
0 |
T32 |
2573 |
2561 |
0 |
0 |
T33 |
682 |
622 |
0 |
0 |
T34 |
1030 |
977 |
0 |
0 |
T35 |
3094 |
3034 |
0 |
0 |
T36 |
2986 |
2926 |
0 |
0 |
T37 |
17639 |
17620 |
0 |
0 |
T38 |
27702 |
27649 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36334374 |
0 |
2415 |
T4 |
1478 |
1395 |
0 |
3 |
T5 |
1036 |
997 |
0 |
3 |
T6 |
1634 |
1469 |
0 |
3 |
T32 |
1339 |
1295 |
0 |
3 |
T33 |
1460 |
1288 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
1610 |
1548 |
0 |
3 |
T36 |
1555 |
1495 |
0 |
3 |
T37 |
1836 |
1830 |
0 |
3 |
T38 |
2885 |
2874 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36334374 |
0 |
2415 |
T4 |
1478 |
1395 |
0 |
3 |
T5 |
1036 |
997 |
0 |
3 |
T6 |
1634 |
1469 |
0 |
3 |
T32 |
1339 |
1295 |
0 |
3 |
T33 |
1460 |
1288 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
1610 |
1548 |
0 |
3 |
T36 |
1555 |
1495 |
0 |
3 |
T37 |
1836 |
1830 |
0 |
3 |
T38 |
2885 |
2874 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36334374 |
0 |
2415 |
T4 |
1478 |
1395 |
0 |
3 |
T5 |
1036 |
997 |
0 |
3 |
T6 |
1634 |
1469 |
0 |
3 |
T32 |
1339 |
1295 |
0 |
3 |
T33 |
1460 |
1288 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
1610 |
1548 |
0 |
3 |
T36 |
1555 |
1495 |
0 |
3 |
T37 |
1836 |
1830 |
0 |
3 |
T38 |
2885 |
2874 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36334374 |
0 |
2415 |
T4 |
1478 |
1395 |
0 |
3 |
T5 |
1036 |
997 |
0 |
3 |
T6 |
1634 |
1469 |
0 |
3 |
T32 |
1339 |
1295 |
0 |
3 |
T33 |
1460 |
1288 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
1610 |
1548 |
0 |
3 |
T36 |
1555 |
1495 |
0 |
3 |
T37 |
1836 |
1830 |
0 |
3 |
T38 |
2885 |
2874 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36334374 |
0 |
2415 |
T4 |
1478 |
1395 |
0 |
3 |
T5 |
1036 |
997 |
0 |
3 |
T6 |
1634 |
1469 |
0 |
3 |
T32 |
1339 |
1295 |
0 |
3 |
T33 |
1460 |
1288 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
1610 |
1548 |
0 |
3 |
T36 |
1555 |
1495 |
0 |
3 |
T37 |
1836 |
1830 |
0 |
3 |
T38 |
2885 |
2874 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36334374 |
0 |
2415 |
T4 |
1478 |
1395 |
0 |
3 |
T5 |
1036 |
997 |
0 |
3 |
T6 |
1634 |
1469 |
0 |
3 |
T32 |
1339 |
1295 |
0 |
3 |
T33 |
1460 |
1288 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
1610 |
1548 |
0 |
3 |
T36 |
1555 |
1495 |
0 |
3 |
T37 |
1836 |
1830 |
0 |
3 |
T38 |
2885 |
2874 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
39062799 |
36341246 |
0 |
0 |
T4 |
1478 |
1398 |
0 |
0 |
T5 |
1036 |
1000 |
0 |
0 |
T6 |
1634 |
1472 |
0 |
0 |
T32 |
1339 |
1298 |
0 |
0 |
T33 |
1460 |
1291 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
1610 |
1551 |
0 |
0 |
T36 |
1555 |
1498 |
0 |
0 |
T37 |
1836 |
1833 |
0 |
0 |
T38 |
2885 |
2877 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71074681 |
0 |
2415 |
T4 |
1541 |
1454 |
0 |
3 |
T5 |
4322 |
4164 |
0 |
3 |
T6 |
1702 |
1530 |
0 |
3 |
T32 |
5361 |
5189 |
0 |
3 |
T33 |
1437 |
1265 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
6445 |
6202 |
0 |
3 |
T36 |
6222 |
5993 |
0 |
3 |
T37 |
36747 |
36661 |
0 |
3 |
T38 |
57712 |
57540 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
21285 |
0 |
0 |
T4 |
1541 |
10 |
0 |
0 |
T5 |
4322 |
4 |
0 |
0 |
T6 |
1702 |
20 |
0 |
0 |
T32 |
5361 |
13 |
0 |
0 |
T33 |
1437 |
5 |
0 |
0 |
T34 |
2147 |
11 |
0 |
0 |
T35 |
6445 |
7 |
0 |
0 |
T36 |
6222 |
12 |
0 |
0 |
T37 |
36747 |
18 |
0 |
0 |
T38 |
57712 |
58 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71074681 |
0 |
2415 |
T4 |
1541 |
1454 |
0 |
3 |
T5 |
4322 |
4164 |
0 |
3 |
T6 |
1702 |
1530 |
0 |
3 |
T32 |
5361 |
5189 |
0 |
3 |
T33 |
1437 |
1265 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
6445 |
6202 |
0 |
3 |
T36 |
6222 |
5993 |
0 |
3 |
T37 |
36747 |
36661 |
0 |
3 |
T38 |
57712 |
57540 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
21125 |
0 |
0 |
T4 |
1541 |
5 |
0 |
0 |
T5 |
4322 |
4 |
0 |
0 |
T6 |
1702 |
26 |
0 |
0 |
T32 |
5361 |
9 |
0 |
0 |
T33 |
1437 |
5 |
0 |
0 |
T34 |
2147 |
11 |
0 |
0 |
T35 |
6445 |
17 |
0 |
0 |
T36 |
6222 |
15 |
0 |
0 |
T37 |
36747 |
20 |
0 |
0 |
T38 |
57712 |
61 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71074681 |
0 |
2415 |
T4 |
1541 |
1454 |
0 |
3 |
T5 |
4322 |
4164 |
0 |
3 |
T6 |
1702 |
1530 |
0 |
3 |
T32 |
5361 |
5189 |
0 |
3 |
T33 |
1437 |
1265 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
6445 |
6202 |
0 |
3 |
T36 |
6222 |
5993 |
0 |
3 |
T37 |
36747 |
36661 |
0 |
3 |
T38 |
57712 |
57540 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
21139 |
0 |
0 |
T4 |
1541 |
8 |
0 |
0 |
T5 |
4322 |
4 |
0 |
0 |
T6 |
1702 |
16 |
0 |
0 |
T32 |
5361 |
9 |
0 |
0 |
T33 |
1437 |
5 |
0 |
0 |
T34 |
2147 |
5 |
0 |
0 |
T35 |
6445 |
9 |
0 |
0 |
T36 |
6222 |
13 |
0 |
0 |
T37 |
36747 |
17 |
0 |
0 |
T38 |
57712 |
56 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71074681 |
0 |
2415 |
T4 |
1541 |
1454 |
0 |
3 |
T5 |
4322 |
4164 |
0 |
3 |
T6 |
1702 |
1530 |
0 |
3 |
T32 |
5361 |
5189 |
0 |
3 |
T33 |
1437 |
1265 |
0 |
3 |
T34 |
2147 |
1932 |
0 |
3 |
T35 |
6445 |
6202 |
0 |
3 |
T36 |
6222 |
5993 |
0 |
3 |
T37 |
36747 |
36661 |
0 |
3 |
T38 |
57712 |
57540 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
21225 |
0 |
0 |
T4 |
1541 |
8 |
0 |
0 |
T5 |
4322 |
4 |
0 |
0 |
T6 |
1702 |
20 |
0 |
0 |
T32 |
5361 |
9 |
0 |
0 |
T33 |
1437 |
5 |
0 |
0 |
T34 |
2147 |
18 |
0 |
0 |
T35 |
6445 |
11 |
0 |
0 |
T36 |
6222 |
13 |
0 |
0 |
T37 |
36747 |
15 |
0 |
0 |
T38 |
57712 |
63 |
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 |
805 |
805 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T34 |
1 |
1 |
0 |
0 |
T35 |
1 |
1 |
0 |
0 |
T36 |
1 |
1 |
0 |
0 |
T37 |
1 |
1 |
0 |
0 |
T38 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
75706418 |
71081469 |
0 |
0 |
T4 |
1541 |
1457 |
0 |
0 |
T5 |
4322 |
4167 |
0 |
0 |
T6 |
1702 |
1533 |
0 |
0 |
T32 |
5361 |
5192 |
0 |
0 |
T33 |
1437 |
1268 |
0 |
0 |
T34 |
2147 |
1935 |
0 |
0 |
T35 |
6445 |
6205 |
0 |
0 |
T36 |
6222 |
5996 |
0 |
0 |
T37 |
36747 |
36664 |
0 |
0 |
T38 |
57712 |
57543 |
0 |
0 |