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 |
22484 |
22484 |
0 |
0 |
T4 |
28 |
28 |
0 |
0 |
T5 |
28 |
28 |
0 |
0 |
T6 |
28 |
28 |
0 |
0 |
T27 |
28 |
28 |
0 |
0 |
T28 |
28 |
28 |
0 |
0 |
T29 |
28 |
28 |
0 |
0 |
T30 |
28 |
28 |
0 |
0 |
T31 |
28 |
28 |
0 |
0 |
T32 |
28 |
28 |
0 |
0 |
T33 |
28 |
28 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1708764161 |
1624374110 |
0 |
0 |
T4 |
60161 |
56876 |
0 |
0 |
T5 |
47828 |
44619 |
0 |
0 |
T6 |
40341 |
34595 |
0 |
0 |
T27 |
56773 |
55007 |
0 |
0 |
T28 |
54212 |
51032 |
0 |
0 |
T29 |
96648 |
95952 |
0 |
0 |
T30 |
258014 |
256036 |
0 |
0 |
T31 |
38137 |
33999 |
0 |
0 |
T32 |
42598 |
38158 |
0 |
0 |
T33 |
41541 |
35455 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
230003220 |
213996534 |
0 |
14454 |
T4 |
12108 |
11376 |
0 |
18 |
T5 |
10782 |
9954 |
0 |
18 |
T6 |
9282 |
7824 |
0 |
18 |
T27 |
5454 |
5250 |
0 |
18 |
T28 |
8718 |
8172 |
0 |
18 |
T29 |
7770 |
7692 |
0 |
18 |
T30 |
9288 |
9186 |
0 |
18 |
T31 |
6624 |
5802 |
0 |
18 |
T32 |
9792 |
8676 |
0 |
18 |
T33 |
9516 |
7986 |
0 |
18 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
557613950 |
529327789 |
0 |
16863 |
T4 |
17032 |
16008 |
0 |
21 |
T5 |
12879 |
11893 |
0 |
21 |
T6 |
10768 |
9077 |
0 |
21 |
T27 |
19868 |
19160 |
0 |
21 |
T28 |
16800 |
15695 |
0 |
21 |
T29 |
34730 |
34417 |
0 |
21 |
T30 |
99140 |
98179 |
0 |
21 |
T31 |
11484 |
10074 |
0 |
21 |
T32 |
11359 |
10064 |
0 |
21 |
T33 |
11118 |
9328 |
0 |
21 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
557613950 |
133752 |
0 |
0 |
T4 |
17032 |
152 |
0 |
0 |
T5 |
12879 |
16 |
0 |
0 |
T6 |
10768 |
28 |
0 |
0 |
T20 |
0 |
12 |
0 |
0 |
T24 |
0 |
10 |
0 |
0 |
T27 |
19868 |
10 |
0 |
0 |
T28 |
16800 |
63 |
0 |
0 |
T29 |
34730 |
114 |
0 |
0 |
T30 |
99140 |
136 |
0 |
0 |
T31 |
11484 |
53 |
0 |
0 |
T32 |
11359 |
56 |
0 |
0 |
T33 |
11118 |
8 |
0 |
0 |
T43 |
0 |
122 |
0 |
0 |
T56 |
0 |
30 |
0 |
0 |
T57 |
0 |
8 |
0 |
0 |
T58 |
0 |
90 |
0 |
0 |
T61 |
0 |
61 |
0 |
0 |
T87 |
0 |
80 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
921146991 |
880958403 |
0 |
0 |
T4 |
31021 |
29453 |
0 |
0 |
T5 |
24167 |
22733 |
0 |
0 |
T6 |
20291 |
17655 |
0 |
0 |
T27 |
31451 |
30558 |
0 |
0 |
T28 |
28694 |
27126 |
0 |
0 |
T29 |
54148 |
53804 |
0 |
0 |
T30 |
149586 |
148632 |
0 |
0 |
T31 |
20029 |
18084 |
0 |
0 |
T32 |
21447 |
19379 |
0 |
0 |
T33 |
20907 |
18102 |
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 T30 T31 | T4 T30 T31 | T4 T30 T31 | T4 T30 T31
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 T30 T31
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
88307846 |
83965487 |
0 |
0 |
T4 |
2516 |
2367 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1486 |
1256 |
0 |
0 |
T27 |
3494 |
3373 |
0 |
0 |
T28 |
2762 |
2586 |
0 |
0 |
T29 |
6220 |
6168 |
0 |
0 |
T30 |
18588 |
18412 |
0 |
0 |
T31 |
1796 |
1579 |
0 |
0 |
T32 |
1567 |
1391 |
0 |
0 |
T33 |
1538 |
1293 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
88307846 |
83958611 |
0 |
2409 |
T4 |
2516 |
2364 |
0 |
3 |
T5 |
1797 |
1659 |
0 |
3 |
T6 |
1486 |
1253 |
0 |
3 |
T27 |
3494 |
3370 |
0 |
3 |
T28 |
2762 |
2583 |
0 |
3 |
T29 |
6220 |
6165 |
0 |
3 |
T30 |
18588 |
18409 |
0 |
3 |
T31 |
1796 |
1576 |
0 |
3 |
T32 |
1567 |
1388 |
0 |
3 |
T33 |
1538 |
1290 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
88307846 |
19706 |
0 |
0 |
T4 |
2516 |
40 |
0 |
0 |
T5 |
1797 |
0 |
0 |
0 |
T6 |
1486 |
0 |
0 |
0 |
T27 |
3494 |
0 |
0 |
0 |
T28 |
2762 |
0 |
0 |
0 |
T29 |
6220 |
0 |
0 |
0 |
T30 |
18588 |
39 |
0 |
0 |
T31 |
1796 |
21 |
0 |
0 |
T32 |
1567 |
17 |
0 |
0 |
T33 |
1538 |
0 |
0 |
0 |
T43 |
0 |
67 |
0 |
0 |
T56 |
0 |
15 |
0 |
0 |
T57 |
0 |
4 |
0 |
0 |
T58 |
0 |
35 |
0 |
0 |
T61 |
0 |
23 |
0 |
0 |
T87 |
0 |
27 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
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 T30 T31 | T4 T30 T31 | T4 T30 T31 | T4 T30 T31
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 T30 T31
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35666089 |
0 |
2409 |
T4 |
2018 |
1896 |
0 |
3 |
T5 |
1797 |
1659 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
909 |
875 |
0 |
3 |
T28 |
1453 |
1362 |
0 |
3 |
T29 |
1295 |
1282 |
0 |
3 |
T30 |
1548 |
1531 |
0 |
3 |
T31 |
1104 |
967 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1586 |
1331 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
11974 |
0 |
0 |
T4 |
2018 |
32 |
0 |
0 |
T5 |
1797 |
0 |
0 |
0 |
T6 |
1547 |
0 |
0 |
0 |
T20 |
0 |
12 |
0 |
0 |
T24 |
0 |
10 |
0 |
0 |
T27 |
909 |
0 |
0 |
0 |
T28 |
1453 |
0 |
0 |
0 |
T29 |
1295 |
0 |
0 |
0 |
T30 |
1548 |
22 |
0 |
0 |
T31 |
1104 |
11 |
0 |
0 |
T32 |
1632 |
0 |
0 |
0 |
T33 |
1586 |
0 |
0 |
0 |
T43 |
0 |
32 |
0 |
0 |
T56 |
0 |
12 |
0 |
0 |
T58 |
0 |
22 |
0 |
0 |
T61 |
0 |
16 |
0 |
0 |
T87 |
0 |
23 |
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 T30 T31 | T4 T30 T31 | T4 T30 T31 | T4 T30 T31
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 T30 T31
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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,T30,T31 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35666089 |
0 |
2409 |
T4 |
2018 |
1896 |
0 |
3 |
T5 |
1797 |
1659 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
909 |
875 |
0 |
3 |
T28 |
1453 |
1362 |
0 |
3 |
T29 |
1295 |
1282 |
0 |
3 |
T30 |
1548 |
1531 |
0 |
3 |
T31 |
1104 |
967 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1586 |
1331 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
13547 |
0 |
0 |
T4 |
2018 |
27 |
0 |
0 |
T5 |
1797 |
0 |
0 |
0 |
T6 |
1547 |
0 |
0 |
0 |
T27 |
909 |
0 |
0 |
0 |
T28 |
1453 |
0 |
0 |
0 |
T29 |
1295 |
0 |
0 |
0 |
T30 |
1548 |
18 |
0 |
0 |
T31 |
1104 |
5 |
0 |
0 |
T32 |
1632 |
15 |
0 |
0 |
T33 |
1586 |
0 |
0 |
0 |
T43 |
0 |
23 |
0 |
0 |
T56 |
0 |
3 |
0 |
0 |
T57 |
0 |
4 |
0 |
0 |
T58 |
0 |
33 |
0 |
0 |
T61 |
0 |
22 |
0 |
0 |
T87 |
0 |
30 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
95818239 |
0 |
0 |
T4 |
2620 |
2523 |
0 |
0 |
T5 |
1872 |
1846 |
0 |
0 |
T6 |
1547 |
1450 |
0 |
0 |
T27 |
3639 |
3556 |
0 |
0 |
T28 |
2783 |
2657 |
0 |
0 |
T29 |
6480 |
6454 |
0 |
0 |
T30 |
19364 |
19309 |
0 |
0 |
T31 |
1870 |
1773 |
0 |
0 |
T32 |
1632 |
1534 |
0 |
0 |
T33 |
1602 |
1490 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
95818239 |
0 |
0 |
T4 |
2620 |
2523 |
0 |
0 |
T5 |
1872 |
1846 |
0 |
0 |
T6 |
1547 |
1450 |
0 |
0 |
T27 |
3639 |
3556 |
0 |
0 |
T28 |
2783 |
2657 |
0 |
0 |
T29 |
6480 |
6454 |
0 |
0 |
T30 |
19364 |
19309 |
0 |
0 |
T31 |
1870 |
1773 |
0 |
0 |
T32 |
1632 |
1534 |
0 |
0 |
T33 |
1602 |
1490 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
88307846 |
86118824 |
0 |
0 |
T4 |
2516 |
2422 |
0 |
0 |
T5 |
1797 |
1772 |
0 |
0 |
T6 |
1486 |
1393 |
0 |
0 |
T27 |
3494 |
3414 |
0 |
0 |
T28 |
2762 |
2641 |
0 |
0 |
T29 |
6220 |
6195 |
0 |
0 |
T30 |
18588 |
18535 |
0 |
0 |
T31 |
1796 |
1702 |
0 |
0 |
T32 |
1567 |
1473 |
0 |
0 |
T33 |
1538 |
1431 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
88307846 |
86118824 |
0 |
0 |
T4 |
2516 |
2422 |
0 |
0 |
T5 |
1797 |
1772 |
0 |
0 |
T6 |
1486 |
1393 |
0 |
0 |
T27 |
3494 |
3414 |
0 |
0 |
T28 |
2762 |
2641 |
0 |
0 |
T29 |
6220 |
6195 |
0 |
0 |
T30 |
18588 |
18535 |
0 |
0 |
T31 |
1796 |
1702 |
0 |
0 |
T32 |
1567 |
1473 |
0 |
0 |
T33 |
1538 |
1431 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
43310283 |
43310283 |
0 |
0 |
T4 |
1360 |
1360 |
0 |
0 |
T5 |
886 |
886 |
0 |
0 |
T6 |
697 |
697 |
0 |
0 |
T27 |
1707 |
1707 |
0 |
0 |
T28 |
1321 |
1321 |
0 |
0 |
T29 |
3098 |
3098 |
0 |
0 |
T30 |
10398 |
10398 |
0 |
0 |
T31 |
909 |
909 |
0 |
0 |
T32 |
763 |
763 |
0 |
0 |
T33 |
716 |
716 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
43310283 |
43310283 |
0 |
0 |
T4 |
1360 |
1360 |
0 |
0 |
T5 |
886 |
886 |
0 |
0 |
T6 |
697 |
697 |
0 |
0 |
T27 |
1707 |
1707 |
0 |
0 |
T28 |
1321 |
1321 |
0 |
0 |
T29 |
3098 |
3098 |
0 |
0 |
T30 |
10398 |
10398 |
0 |
0 |
T31 |
909 |
909 |
0 |
0 |
T32 |
763 |
763 |
0 |
0 |
T33 |
716 |
716 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
21654700 |
21654700 |
0 |
0 |
T4 |
679 |
679 |
0 |
0 |
T5 |
443 |
443 |
0 |
0 |
T6 |
348 |
348 |
0 |
0 |
T27 |
854 |
854 |
0 |
0 |
T28 |
660 |
660 |
0 |
0 |
T29 |
1549 |
1549 |
0 |
0 |
T30 |
5198 |
5198 |
0 |
0 |
T31 |
453 |
453 |
0 |
0 |
T32 |
382 |
382 |
0 |
0 |
T33 |
358 |
358 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
21654700 |
21654700 |
0 |
0 |
T4 |
679 |
679 |
0 |
0 |
T5 |
443 |
443 |
0 |
0 |
T6 |
348 |
348 |
0 |
0 |
T27 |
854 |
854 |
0 |
0 |
T28 |
660 |
660 |
0 |
0 |
T29 |
1549 |
1549 |
0 |
0 |
T30 |
5198 |
5198 |
0 |
0 |
T31 |
453 |
453 |
0 |
0 |
T32 |
382 |
382 |
0 |
0 |
T33 |
358 |
358 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
47072987 |
45952497 |
0 |
0 |
T4 |
1258 |
1211 |
0 |
0 |
T5 |
899 |
886 |
0 |
0 |
T6 |
743 |
697 |
0 |
0 |
T27 |
1747 |
1707 |
0 |
0 |
T28 |
1318 |
1257 |
0 |
0 |
T29 |
3111 |
3098 |
0 |
0 |
T30 |
9294 |
9268 |
0 |
0 |
T31 |
897 |
851 |
0 |
0 |
T32 |
783 |
737 |
0 |
0 |
T33 |
769 |
715 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
47072987 |
45952497 |
0 |
0 |
T4 |
1258 |
1211 |
0 |
0 |
T5 |
899 |
886 |
0 |
0 |
T6 |
743 |
697 |
0 |
0 |
T27 |
1747 |
1707 |
0 |
0 |
T28 |
1318 |
1257 |
0 |
0 |
T29 |
3111 |
3098 |
0 |
0 |
T30 |
9294 |
9268 |
0 |
0 |
T31 |
897 |
851 |
0 |
0 |
T32 |
783 |
737 |
0 |
0 |
T33 |
769 |
715 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35666089 |
0 |
2409 |
T4 |
2018 |
1896 |
0 |
3 |
T5 |
1797 |
1659 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
909 |
875 |
0 |
3 |
T28 |
1453 |
1362 |
0 |
3 |
T29 |
1295 |
1282 |
0 |
3 |
T30 |
1548 |
1531 |
0 |
3 |
T31 |
1104 |
967 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1586 |
1331 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35666089 |
0 |
2409 |
T4 |
2018 |
1896 |
0 |
3 |
T5 |
1797 |
1659 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
909 |
875 |
0 |
3 |
T28 |
1453 |
1362 |
0 |
3 |
T29 |
1295 |
1282 |
0 |
3 |
T30 |
1548 |
1531 |
0 |
3 |
T31 |
1104 |
967 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1586 |
1331 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35666089 |
0 |
2409 |
T4 |
2018 |
1896 |
0 |
3 |
T5 |
1797 |
1659 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
909 |
875 |
0 |
3 |
T28 |
1453 |
1362 |
0 |
3 |
T29 |
1295 |
1282 |
0 |
3 |
T30 |
1548 |
1531 |
0 |
3 |
T31 |
1104 |
967 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1586 |
1331 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35666089 |
0 |
2409 |
T4 |
2018 |
1896 |
0 |
3 |
T5 |
1797 |
1659 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
909 |
875 |
0 |
3 |
T28 |
1453 |
1362 |
0 |
3 |
T29 |
1295 |
1282 |
0 |
3 |
T30 |
1548 |
1531 |
0 |
3 |
T31 |
1104 |
967 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1586 |
1331 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35666089 |
0 |
2409 |
T4 |
2018 |
1896 |
0 |
3 |
T5 |
1797 |
1659 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
909 |
875 |
0 |
3 |
T28 |
1453 |
1362 |
0 |
3 |
T29 |
1295 |
1282 |
0 |
3 |
T30 |
1548 |
1531 |
0 |
3 |
T31 |
1104 |
967 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1586 |
1331 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_flops.gen_no_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35666089 |
0 |
2409 |
T4 |
2018 |
1896 |
0 |
3 |
T5 |
1797 |
1659 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
909 |
875 |
0 |
3 |
T28 |
1453 |
1362 |
0 |
3 |
T29 |
1295 |
1282 |
0 |
3 |
T30 |
1548 |
1531 |
0 |
3 |
T31 |
1104 |
967 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1586 |
1331 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
38333870 |
35673180 |
0 |
0 |
T4 |
2018 |
1899 |
0 |
0 |
T5 |
1797 |
1662 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
909 |
878 |
0 |
0 |
T28 |
1453 |
1365 |
0 |
0 |
T29 |
1295 |
1285 |
0 |
0 |
T30 |
1548 |
1534 |
0 |
0 |
T31 |
1104 |
970 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1586 |
1334 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93509250 |
0 |
2409 |
T4 |
2620 |
2463 |
0 |
3 |
T5 |
1872 |
1729 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
3639 |
3510 |
0 |
3 |
T28 |
2783 |
2597 |
0 |
3 |
T29 |
6480 |
6422 |
0 |
3 |
T30 |
19364 |
19177 |
0 |
3 |
T31 |
1870 |
1641 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1602 |
1344 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
22020 |
0 |
0 |
T4 |
2620 |
10 |
0 |
0 |
T5 |
1872 |
4 |
0 |
0 |
T6 |
1547 |
6 |
0 |
0 |
T27 |
3639 |
1 |
0 |
0 |
T28 |
2783 |
17 |
0 |
0 |
T29 |
6480 |
29 |
0 |
0 |
T30 |
19364 |
13 |
0 |
0 |
T31 |
1870 |
3 |
0 |
0 |
T32 |
1632 |
3 |
0 |
0 |
T33 |
1602 |
2 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93509250 |
0 |
2409 |
T4 |
2620 |
2463 |
0 |
3 |
T5 |
1872 |
1729 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
3639 |
3510 |
0 |
3 |
T28 |
2783 |
2597 |
0 |
3 |
T29 |
6480 |
6422 |
0 |
3 |
T30 |
19364 |
19177 |
0 |
3 |
T31 |
1870 |
1641 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1602 |
1344 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
22137 |
0 |
0 |
T4 |
2620 |
16 |
0 |
0 |
T5 |
1872 |
4 |
0 |
0 |
T6 |
1547 |
10 |
0 |
0 |
T27 |
3639 |
4 |
0 |
0 |
T28 |
2783 |
17 |
0 |
0 |
T29 |
6480 |
29 |
0 |
0 |
T30 |
19364 |
15 |
0 |
0 |
T31 |
1870 |
5 |
0 |
0 |
T32 |
1632 |
7 |
0 |
0 |
T33 |
1602 |
2 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93509250 |
0 |
2409 |
T4 |
2620 |
2463 |
0 |
3 |
T5 |
1872 |
1729 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
3639 |
3510 |
0 |
3 |
T28 |
2783 |
2597 |
0 |
3 |
T29 |
6480 |
6422 |
0 |
3 |
T30 |
19364 |
19177 |
0 |
3 |
T31 |
1870 |
1641 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1602 |
1344 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
22177 |
0 |
0 |
T4 |
2620 |
13 |
0 |
0 |
T5 |
1872 |
4 |
0 |
0 |
T6 |
1547 |
6 |
0 |
0 |
T27 |
3639 |
1 |
0 |
0 |
T28 |
2783 |
13 |
0 |
0 |
T29 |
6480 |
28 |
0 |
0 |
T30 |
19364 |
16 |
0 |
0 |
T31 |
1870 |
5 |
0 |
0 |
T32 |
1632 |
7 |
0 |
0 |
T33 |
1602 |
2 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
0 |
0 |
gen_flops.gen_stable_chks.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93509250 |
0 |
2409 |
T4 |
2620 |
2463 |
0 |
3 |
T5 |
1872 |
1729 |
0 |
3 |
T6 |
1547 |
1304 |
0 |
3 |
T27 |
3639 |
3510 |
0 |
3 |
T28 |
2783 |
2597 |
0 |
3 |
T29 |
6480 |
6422 |
0 |
3 |
T30 |
19364 |
19177 |
0 |
3 |
T31 |
1870 |
1641 |
0 |
3 |
T32 |
1632 |
1446 |
0 |
3 |
T33 |
1602 |
1344 |
0 |
3 |
gen_flops.gen_stable_chks.OutputIfUnstable_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
22191 |
0 |
0 |
T4 |
2620 |
14 |
0 |
0 |
T5 |
1872 |
4 |
0 |
0 |
T6 |
1547 |
6 |
0 |
0 |
T27 |
3639 |
4 |
0 |
0 |
T28 |
2783 |
16 |
0 |
0 |
T29 |
6480 |
28 |
0 |
0 |
T30 |
19364 |
13 |
0 |
0 |
T31 |
1870 |
3 |
0 |
0 |
T32 |
1632 |
7 |
0 |
0 |
T33 |
1602 |
2 |
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 |
803 |
803 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T27 |
1 |
1 |
0 |
0 |
T28 |
1 |
1 |
0 |
0 |
T29 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T31 |
1 |
1 |
0 |
0 |
T32 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
OutputsKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
0 |
0 |
gen_no_flops.OutputDelay_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
98159591 |
93516195 |
0 |
0 |
T4 |
2620 |
2466 |
0 |
0 |
T5 |
1872 |
1732 |
0 |
0 |
T6 |
1547 |
1307 |
0 |
0 |
T27 |
3639 |
3513 |
0 |
0 |
T28 |
2783 |
2600 |
0 |
0 |
T29 |
6480 |
6425 |
0 |
0 |
T30 |
19364 |
19180 |
0 |
0 |
T31 |
1870 |
1644 |
0 |
0 |
T32 |
1632 |
1449 |
0 |
0 |
T33 |
1602 |
1347 |
0 |
0 |