Line Coverage for Module :
pinmux_strap_sampling
| Line No. | Total | Covered | Percent |
TOTAL | | 303 | 301 | 99.34 |
CONT_ASSIGN | 132 | 1 | 1 | 100.00 |
CONT_ASSIGN | 133 | 1 | 1 | 100.00 |
CONT_ASSIGN | 153 | 1 | 1 | 100.00 |
CONT_ASSIGN | 157 | 1 | 1 | 100.00 |
CONT_ASSIGN | 187 | 1 | 1 | 100.00 |
CONT_ASSIGN | 230 | 1 | 1 | 100.00 |
CONT_ASSIGN | 232 | 1 | 1 | 100.00 |
CONT_ASSIGN | 236 | 1 | 1 | 100.00 |
CONT_ASSIGN | 240 | 1 | 1 | 100.00 |
CONT_ASSIGN | 241 | 1 | 1 | 100.00 |
CONT_ASSIGN | 242 | 1 | 1 | 100.00 |
CONT_ASSIGN | 259 | 1 | 1 | 100.00 |
ALWAYS | 262 | 9 | 9 | 100.00 |
ALWAYS | 283 | 9 | 9 | 100.00 |
CONT_ASSIGN | 308 | 1 | 1 | 100.00 |
ALWAYS | 312 | 17 | 17 | 100.00 |
CONT_ASSIGN | 371 | 1 | 1 | 100.00 |
CONT_ASSIGN | 372 | 1 | 1 | 100.00 |
CONT_ASSIGN | 373 | 1 | 1 | 100.00 |
CONT_ASSIGN | 396 | 1 | 1 | 100.00 |
CONT_ASSIGN | 396 | 1 | 1 | 100.00 |
CONT_ASSIGN | 396 | 1 | 1 | 100.00 |
CONT_ASSIGN | 396 | 1 | 1 | 100.00 |
CONT_ASSIGN | 396 | 1 | 1 | 100.00 |
CONT_ASSIGN | 400 | 1 | 1 | 100.00 |
CONT_ASSIGN | 401 | 1 | 1 | 100.00 |
CONT_ASSIGN | 404 | 1 | 1 | 100.00 |
CONT_ASSIGN | 404 | 1 | 1 | 100.00 |
CONT_ASSIGN | 404 | 1 | 1 | 100.00 |
CONT_ASSIGN | 404 | 1 | 1 | 100.00 |
CONT_ASSIGN | 405 | 1 | 1 | 100.00 |
CONT_ASSIGN | 405 | 1 | 1 | 100.00 |
CONT_ASSIGN | 405 | 1 | 1 | 100.00 |
CONT_ASSIGN | 405 | 1 | 1 | 100.00 |
CONT_ASSIGN | 412 | 1 | 1 | 100.00 |
CONT_ASSIGN | 412 | 1 | 1 | 100.00 |
CONT_ASSIGN | 414 | 1 | 1 | 100.00 |
CONT_ASSIGN | 414 | 1 | 1 | 100.00 |
CONT_ASSIGN | 414 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 417 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 418 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 0 | 0.00 |
CONT_ASSIGN | 419 | 1 | 0 | 0.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 419 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
CONT_ASSIGN | 420 | 1 | 1 | 100.00 |
131 lc_tx_t lc_strap_en, lc_hw_debug_en_masked;
132 1/1 assign lc_strap_en = lc_tx_bool_to_lc_tx(strap_en_i);
Tests: T1 T2 T3
133 1/1 assign lc_hw_debug_en_masked = lc_tx_and_hi(lc_strap_en, lc_hw_debug_en[0]);
Tests: T1 T2 T3
134
135 // Output ON if
136 // - If the strap sampling pulse is asserted and lc_hw_debug_en is ON
137 // - If the pinmux_hw_debug_en_q is already set to ON (this is the latching feedback loop)
138 // Note: make sure we use a hardened, rectifying OR function since otherwise two non-strict
139 // values may produce a strict ON value.
140 lc_tx_t hw_debug_en_set, pinmux_hw_debug_en_q;
141 prim_lc_or_hardened #(
142 .ActVal(On)
143 ) u_prim_lc_or_hardened (
144 .clk_i,
145 .rst_ni,
146 .lc_en_a_i(lc_hw_debug_en_masked),
147 .lc_en_b_i(pinmux_hw_debug_en_q),
148 .lc_en_o (hw_debug_en_set)
149 );
150
151 // Output ON if both lc_check_byp_en and lc_escalate_en are set to OFF.
152 lc_tx_t hw_debug_en_gating;
153 1/1 assign hw_debug_en_gating = lc_tx_inv(lc_tx_and_lo(lc_check_byp_en[0], lc_escalate_en[0]));
Tests: T29 T57 T82
154
155 // Gate the hw_debug_en_set signal and feed it into the latching flop.
156 lc_tx_t pinmux_hw_debug_en_d;
157 1/1 assign pinmux_hw_debug_en_d = lc_tx_and_hi(hw_debug_en_set, hw_debug_en_gating);
Tests: T1 T2 T3
158
159 prim_lc_sender u_prim_lc_sender_pinmux_hw_debug_en (
160 .clk_i,
161 .rst_ni,
162 .lc_en_i(pinmux_hw_debug_en_d),
163 .lc_en_o(pinmux_hw_debug_en_q)
164 );
165
166 typedef enum logic [1:0] {
167 HwDebugEnSample,
168 HwDebugEnTapSel,
169 HwDebugEnRvDmOut,
170 HwDebugEnLast
171 } pinmux_hw_debug_en_e;
172
173 lc_tx_t [HwDebugEnLast-1:0] pinmux_hw_debug_en;
174 prim_lc_sync #(
175 .NumCopies(int'(HwDebugEnLast)),
176 .AsyncOn(0) // no sync needed
177 ) u_prim_lc_sync_pinmux_hw_debug_en (
178 .clk_i,
179 .rst_ni,
180 .lc_en_i(pinmux_hw_debug_en_q),
181 .lc_en_o(pinmux_hw_debug_en)
182 );
183
184 // SEC_CM: PINMUX_HW_DEBUG_EN.INTERSIG.MUBI
185 // We send this latched version over to the RV_DM in order to gate the JTAG signals and TAP side.
186 // Note that the bus side will remain gated with the live lc_hw_debug_en value inside RV_DM.
187 1/1 assign pinmux_hw_debug_en_o = pinmux_hw_debug_en[HwDebugEnRvDmOut];
Tests: T1 T2 T3
188
189 // Check that we can correctly latch upon strap_en_i
190 `ASSERT(LcHwDebugEnSet_A,
191 (lc_tx_test_true_strict(lc_hw_debug_en[0]) ||
192 lc_tx_test_true_strict(pinmux_hw_debug_en_q)) &&
193 lc_tx_test_false_strict(lc_check_byp_en[0]) &&
194 lc_tx_test_false_strict(lc_escalate_en[0]) &&
195 strap_en_i
196 |=>
197 lc_tx_test_true_strict(pinmux_hw_debug_en_q))
198 // Check that latching ON can only occur if lc_hw_debug_en_i is set.
199 `ASSERT(LcHwDebugEnSetRev0_A,
200 lc_tx_test_false_loose(pinmux_hw_debug_en_q) ##1
201 lc_tx_test_true_strict(pinmux_hw_debug_en_q)
202 |->
203 $past(lc_tx_test_true_strict(lc_hw_debug_en[0])))
204 // Check that latching ON can only occur if strap_en_i is set.
205 `ASSERT(LcHwDebugEnSetRev1_A,
206 lc_tx_test_false_loose(pinmux_hw_debug_en_q) ##1
207 lc_tx_test_true_strict(pinmux_hw_debug_en_q)
208 |->
209 $past(strap_en_i))
210 // Check that any non-OFF value on lc_check_byp_en_i and
211 // lc_escalate_en_i clears the latched value.
212 `ASSERT(LcHwDebugEnClear_A,
213 lc_tx_test_true_loose(lc_check_byp_en[0]) ||
214 lc_tx_test_true_loose(lc_escalate_en[0])
215 |=>
216 lc_tx_test_false_loose(pinmux_hw_debug_en_q))
217
218 //////////////////////////
219 // Strap Sampling Logic //
220 //////////////////////////
221
222 logic dft_strap_valid_d, dft_strap_valid_q;
223 logic lc_strap_sample_en, rv_strap_sample_en, dft_strap_sample_en;
224 logic [NTapStraps-1:0] tap_strap_d, tap_strap_q;
225 logic [NDFTStraps-1:0] dft_strap_d, dft_strap_q;
226
227 // SEC_CM: TAP.MUX.LC_GATED
228 // The LC strap at index 0 has a slightly different
229 // enable condition than the DFT strap at index 1.
230 1/1 assign tap_strap_d[0] = (lc_strap_sample_en) ? in_padring_i[TargetCfg.tap_strap0_idx] :
Tests: T1 T2 T3
231 tap_strap_q[0];
232 1/1 assign tap_strap_d[1] = (rv_strap_sample_en) ? in_padring_i[TargetCfg.tap_strap1_idx] :
Tests: T1 T2 T3
233 tap_strap_q[1];
234
235 // We're always using the DFT strap sample enable for the DFT straps.
236 1/1 assign dft_strap_d = (dft_strap_sample_en) ? {in_padring_i[TargetCfg.dft_strap1_idx],
Tests: T1 T2 T3
237 in_padring_i[TargetCfg.dft_strap0_idx]} :
238 dft_strap_q;
239
240 1/1 assign dft_strap_valid_d = dft_strap_sample_en | dft_strap_valid_q;
Tests: T1 T2 T3
241 1/1 assign dft_strap_test_o.valid = dft_strap_valid_q;
Tests: T1 T2 T3
242 1/1 assign dft_strap_test_o.straps = dft_strap_q;
Tests: T84 T85 T91
243
244
245 // During dft enabled states, we continously sample all straps unless
246 // told not to do so by external dft logic
247 logic tap_sampling_en;
248 logic dft_hold_tap_sel;
249 // Delay the strap sampling pulse by one cycle so that the pinmux_hw_debug_en above can
250 // propagate through the pinmux_hw_debug_en_q flop.
251 logic strap_en_q;
252
253 prim_buf #(
254 .Width(1)
255 ) u_buf_hold_tap (
256 .in_i(dft_hold_tap_sel_i),
257 .out_o(dft_hold_tap_sel)
258 );
259 1/1 assign tap_sampling_en = lc_tx_test_true_strict(lc_dft_en[DftEnSample]) & ~dft_hold_tap_sel;
Tests: T1 T2 T3
260
261 always_comb begin : p_strap_sampling
262 1/1 lc_strap_sample_en = 1'b0;
Tests: T1 T2 T3
263 1/1 rv_strap_sample_en = 1'b0;
Tests: T1 T2 T3
264 1/1 dft_strap_sample_en = 1'b0;
Tests: T1 T2 T3
265 // Initial strap sampling pulse from pwrmgr,
266 // qualified by life cycle signals.
267 // The DFT-mode straps are always sampled only once.
268 1/1 if (strap_en_q && tap_sampling_en) begin
Tests: T1 T2 T3
269 1/1 dft_strap_sample_en = 1'b1;
Tests: T1 T2 T3
270 end
MISSING_ELSE
271 // In DFT-enabled life cycle states we continously
272 // sample the TAP straps to be able to switch back and
273 // forth between different TAPs.
274 1/1 if (strap_en_q || tap_sampling_en) begin
Tests: T1 T2 T3
275 1/1 lc_strap_sample_en = 1'b1;
Tests: T1 T2 T3
276 1/1 if (lc_tx_test_true_strict(pinmux_hw_debug_en[HwDebugEnSample])) begin
Tests: T1 T2 T3
277 1/1 rv_strap_sample_en = 1'b1;
Tests: T1 T2 T3
278 end
MISSING_ELSE
279 end
MISSING_ELSE
280 end
281
282 always_ff @(posedge clk_i or negedge rst_ni) begin : p_strap_sample
283 1/1 if (!rst_ni) begin
Tests: T1 T2 T3
284 1/1 tap_strap_q <= '0;
Tests: T1 T2 T3
285 1/1 dft_strap_q <= '0;
Tests: T1 T2 T3
286 1/1 dft_strap_valid_q <= 1'b0;
Tests: T1 T2 T3
287 1/1 strap_en_q <= 1'b0;
Tests: T1 T2 T3
288 end else begin
289 1/1 tap_strap_q <= tap_strap_d;
Tests: T1 T2 T3
290 1/1 dft_strap_q <= dft_strap_d;
Tests: T1 T2 T3
291 1/1 dft_strap_valid_q <= dft_strap_valid_d;
Tests: T1 T2 T3
292 1/1 strap_en_q <= strap_en_i;
Tests: T1 T2 T3
293 end
294 end
295
296 ///////////////////////
297 // TAP Selection Mux //
298 ///////////////////////
299
300 logic jtag_en;
301 tap_strap_t tap_strap;
302 jtag_pkg::jtag_req_t jtag_req, lc_jtag_req, rv_jtag_req, dft_jtag_req;
303 jtag_pkg::jtag_rsp_t jtag_rsp, lc_jtag_rsp, rv_jtag_rsp, dft_jtag_rsp;
304
305 // This muxes the JTAG signals to the correct TAP, based on the
306 // sampled straps. Further, the individual JTAG signals are gated
307 // using the corresponding life cycle signal.
308 1/1 assign tap_strap = tap_strap_t'(tap_strap_q);
Tests: T34 T29 T57
309 `ASSERT_KNOWN(TapStrapKnown_A, tap_strap)
310
311 always_comb begin : p_tap_mux
312 1/1 jtag_rsp = '0;
Tests: T1 T2 T3
313 // Note that this holds the JTAGs in reset
314 // when they are not selected.
315 1/1 lc_jtag_req = '0;
Tests: T1 T2 T3
316 1/1 rv_jtag_req = '0;
Tests: T1 T2 T3
317 1/1 dft_jtag_req = '0;
Tests: T1 T2 T3
318 // This activates the TDO override further below.
319 1/1 jtag_en = 1'b0;
Tests: T1 T2 T3
320
321 1/1 unique case (tap_strap)
Tests: T1 T2 T3
322 LcTapSel: begin
323 1/1 lc_jtag_req = jtag_req;
Tests: T34 T29 T57
324 1/1 jtag_rsp = lc_jtag_rsp;
Tests: T34 T29 T57
325 1/1 jtag_en = 1'b1;
Tests: T34 T29 T57
326 end
327 RvTapSel: begin
328 1/1 if (lc_tx_test_true_strict(pinmux_hw_debug_en[HwDebugEnTapSel])) begin
Tests: T87 T88 T89
329 1/1 rv_jtag_req = jtag_req;
Tests: T87 T88 T89
330 1/1 jtag_rsp = rv_jtag_rsp;
Tests: T87 T88 T89
331 1/1 jtag_en = 1'b1;
Tests: T87 T88 T89
332 end
MISSING_ELSE
333 end
334 DftTapSel: begin
335 1/1 if (lc_tx_test_true_strict(lc_dft_en[DftEnTapSel])) begin
Tests: T84 T85 T92
336 1/1 dft_jtag_req = jtag_req;
Tests: T84 T85 T92
337 1/1 jtag_rsp = dft_jtag_rsp;
Tests: T84 T85 T92
338 1/1 jtag_en = 1'b1;
Tests: T84 T85 T92
339 end
==> MISSING_ELSE
340 end
341 default: ;
342 endcase // tap_strap_t'(tap_strap_q)
343 end
344
345 // Insert hand instantiated buffers for
346 // these signals to prevent further optimization.
347 pinmux_jtag_buf u_pinmux_jtag_buf_lc (
348 .req_i(lc_jtag_req),
349 .req_o(lc_jtag_o),
350 .rsp_i(lc_jtag_i),
351 .rsp_o(lc_jtag_rsp)
352 );
353 pinmux_jtag_buf u_pinmux_jtag_buf_rv (
354 .req_i(rv_jtag_req),
355 .req_o(rv_jtag_o),
356 .rsp_i(rv_jtag_i),
357 .rsp_o(rv_jtag_rsp)
358 );
359 pinmux_jtag_buf u_pinmux_jtag_buf_dft (
360 .req_i(dft_jtag_req),
361 .req_o(dft_jtag_o),
362 .rsp_i(dft_jtag_i),
363 .rsp_o(dft_jtag_rsp)
364 );
365
366 //////////////////////
367 // TAP Input Muxes //
368 //////////////////////
369
370 // Inputs connections
371 1/1 assign jtag_req.tck = in_padring_i[TargetCfg.tck_idx];
Tests: T6 T34 T27
372 1/1 assign jtag_req.tms = in_padring_i[TargetCfg.tms_idx];
Tests: T6 T34 T27
373 1/1 assign jtag_req.tdi = in_padring_i[TargetCfg.tdi_idx];
Tests: T6 T34 T27
374
375 // Note that this resets the selected TAP controller in
376 // scanmode. If the TAP controller needs to be active during
377 // reset, this reset bypass needs to be adapted accordingly.
378 prim_clock_mux2 #(
379 .NoFpgaBufG(1'b1)
380 ) u_rst_por_aon_n_mux (
381 .clk0_i(in_padring_i[TargetCfg.trst_idx]),
382 .clk1_i(rst_ni),
383 .sel_i(prim_mubi_pkg::mubi4_test_true_strict(scanmode[0])),
384 .clk_o(jtag_req.trst_n)
385 );
386
387 // Input tie-off muxes and output overrides
388 for (genvar k = 0; k < NumIOs; k++) begin : gen_input_tie_off
389 if (k == TargetCfg.tck_idx ||
390 k == TargetCfg.tms_idx ||
391 k == TargetCfg.trst_idx ||
392 k == TargetCfg.tdi_idx ||
393 k == TargetCfg.tdo_idx) begin : gen_jtag_signal
394
395 // Tie off inputs.
396 5/5 assign in_core_o[k] = (jtag_en) ? 1'b0 : in_padring_i[k];
Tests: T6 T34 T27 | T6 T34 T27 | T6 T34 T27 | T6 T34 T27 | T6 T34 T27
397
398 if (k == TargetCfg.tdo_idx) begin : gen_output_mux
399 // Override TDO output.
400 1/1 assign out_padring_o[k] = (jtag_en) ? jtag_rsp.tdo : out_core_i[k];
Tests: T34 T27 T29
401 1/1 assign oe_padring_o[k] = (jtag_en) ? jtag_rsp.tdo_oe : oe_core_i[k];
Tests: T34 T27 T29
402 end else begin : gen_output_tie_off
403 // Make sure these pads are set to high-z.
404 4/4 assign out_padring_o[k] = (jtag_en) ? 1'b0 : out_core_i[k];
Tests: T34 T27 T29 | T34 T27 T29 | T34 T27 T29 | T6 T34 T27
405 4/4 assign oe_padring_o[k] = (jtag_en) ? 1'b0 : oe_core_i[k];
Tests: T34 T27 T29 | T34 T27 T29 | T34 T27 T29 | T6 T34 T27
406 end
407
408 // Also reset all corresponding pad attributes to the default ('0) when JTAG is enabled.
409 // This disables functional pad features that may have been set, e.g., pull-up/pull-down.
410 // Do enable schmitt trigger on JTAG clock and JTAG reset for better signal integrity.
411 if (k == TargetCfg.tck_idx || k == TargetCfg.trst_idx) begin : gen_schmitt_en
412 2/2 assign attr_padring_o[k] = (jtag_en) ? '{schmitt_en: 1'b1, default: '0} : attr_core_i[k];
Tests: T34 T29 T57 | T34 T29 T57
413 end else begin : gen_no_schmitt
414 3/3 assign attr_padring_o[k] = (jtag_en) ? '0 : attr_core_i[k];
Tests: T34 T29 T57 | T34 T29 T57 | T34 T29 T57
415 end
416 end else begin : gen_other_inputs
417 58/58 assign attr_padring_o[k] = attr_core_i[k];
Tests: T25 T47 T48 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T11 T49 T50 | T20 T21 T22 | T25 T47 T48 | T25 T8 T9 | T20 T21 T22 | T25 T8 T9 | T25 T10 T47 | T25 T10 T47 | T25 T10 T47 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T54 T55 T56 | T54 T55 T56 | T54 T55 T56 | T1 T2 T3 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T20 T21 T22 | T1 T2 T3 | T1 T2 T3 | T25 T8 T9 | T25 T8 T9 | T25 T8 T9 | T25 T8 T9 | T8 T9 T10 | T8 T9 T10 | T8 T9 T10 | T8 T9 T10 | T15 T45 T46 | T15 T45 T46 | T20 T21 T22 | T20 T21 T22 | T25 T8 T9 | T25 T8 T9
418 58/58 assign in_core_o[k] = in_padring_i[k];
Tests: T6 T25 T26 | T6 T26 T27 | T6 T26 T27 | T6 T26 T27 | T6 T26 T27 | T6 T26 T27 | T6 T26 T27 | T5 T6 T11 | T5 T6 T26 | T6 T25 T35 | T6 T25 T8 | T5 T6 T35 | T6 T25 T8 | T5 T6 T25 | T1 T2 T3 | T6 T25 T27 | T6 T27 T12 | T6 T27 T12 | T2 T6 T27 | T2 T6 T27 | T2 T6 T27 | T2 T6 T27 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T6 T28 T29 | T4 T30 T6 | T6 T31 T32 | T6 T27 T12 | T6 T27 T33 | T6 T27 T33 | T6 T27 T33 | T1 T2 T3 | T6 T27 T12 | T1 T2 T3 | T6 T27 T35 | T6 T27 T35 | T6 T27 T35 | T6 T27 T12 | T4 T30 T6 | T4 T6 T7 | T6 T23 T25 | T6 T25 T8 | T6 T25 T8 | T6 T25 T8 | T5 T6 T23 | T5 T6 T23 | T5 T6 T23 | T5 T6 T23 | T6 T23 T12 | T6 T23 T12 | T5 T6 T11 | T5 T6 T23 | T6 T25 T8 | T5 T6 T25
419 56/58 ==> assign out_padring_o[k] = out_core_i[k];
Tests: T6 T26 T27 | T6 T26 T27 | T6 T26 T27 | T6 T26 T27 | T26 T27 T39 | T26 T27 T63 | T26 T27 T39 | T26 T27 T39 | T6 T27 T39 | T6 T25 T8 | T6 T25 T10 | T10 T19 T69 | T25 T20 T21 | T10 T19 T69 | T1 T2 T3 | T27 T10 T39 | T6 T27 T12 | T6 T27 T10 | T2 T6 T27 | T2 T6 T27 | T2 T27 T33 | T2 T27 T33 | T19 T20 T21 | T19 T20 T21 | T20 T21 T22 | T6 T20 T21 | T1 T2 T3 | T20 T21 T22 | T6 T19 T20 | T12 T14 T19 | T6 T19 T20 | T27 T12 T14 | T27 T33 T70 | T27 T33 T70 | T6 T27 T33 | T27 T12 T14 | T27 T12 T14 | T6 T27 T10 | T27 T10 T39 | T27 T10 T39 | T27 T39 T40 | T6 T27 T10 | T4 T6 T7 | T4 T6 T7 | T8 T9 T10 | T6 T8 T9 | T8 T9 T10 | T8 T9 T10 | T5 T6 T8 | T5 T11 T8 | T5 T8 T9 | T5 T6 T8 | T12 T13 T14 | T12 T15 T13 | T8 T9 T10 | T6 T8 T9
420 58/58 assign oe_padring_o[k] = oe_core_i[k];
Tests: T6 T26 T27 | T6 T26 T27 | T6 T26 T27 | T6 T26 T27 | T26 T27 T39 | T6 T26 T27 | T6 T26 T27 | T5 T26 T27 | T6 T27 T58 | T6 T25 T10 | T6 T25 T10 | T10 T19 T69 | T6 T25 T10 | T6 T10 T19 | T1 T2 T3 | T6 T27 T10 | T6 T27 T12 | T6 T27 T10 | T2 T6 T27 | T2 T6 T27 | T2 T6 T27 | T2 T27 T61 | T19 T20 T21 | T19 T20 T21 | T20 T21 T22 | T6 T19 T20 | T1 T2 T3 | T20 T21 T22 | T6 T19 T20 | T12 T14 T19 | T6 T19 T20 | T27 T12 T14 | T6 T27 T33 | T27 T33 T70 | T6 T27 T33 | T6 T27 T12 | T27 T12 T14 | T6 T27 T10 | T27 T10 T39 | T27 T10 T39 | T27 T39 T19 | T6 T27 T10 | T16 T17 T18 | T6 T16 T17 | T6 T8 T9 | T6 T19 T20 | T19 T20 T21 | T20 T21 T22 | T5 T6 T8 | T5 T6 T11 | T5 T6 T8 | T5 T6 T8 | T6 T23 T24 | T6 T23 T24 | T20 T21 T22 | T20 T21 T22 | T6 T8 T9 | T8 T9 T10
Cond Coverage for Module :
pinmux_strap_sampling
| Total | Covered | Percent |
Conditions | 55 | 55 | 100.00 |
Logical | 55 | 55 | 100.00 |
Non-Logical | 0 | 0 | |
Event | 0 | 0 | |
LINE 230
EXPRESSION (lc_strap_sample_en ? in_padring_i[30] : tap_strap_q[0])
---------1--------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T1,T2,T3 |
LINE 232
EXPRESSION (rv_strap_sample_en ? in_padring_i[27] : tap_strap_q[1])
---------1--------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T1,T2,T3 |
LINE 236
EXPRESSION (dft_strap_sample_en ? ({in_padring_i[42], in_padring_i[40]}) : dft_strap_q)
---------1---------
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T1,T2,T3 |
LINE 240
EXPRESSION (dft_strap_sample_en | dft_strap_valid_q)
---------1--------- --------2--------
-1- | -2- | Status | Tests |
0 | 0 | Covered | T1,T2,T3 |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T1,T2,T3 |
LINE 268
EXPRESSION (strap_en_q && tap_sampling_en)
-----1---- -------2-------
-1- | -2- | Status | Tests |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T6,T23,T29 |
1 | 1 | Covered | T1,T2,T3 |
LINE 274
EXPRESSION (strap_en_q || tap_sampling_en)
-----1---- -------2-------
-1- | -2- | Status | Tests |
0 | 0 | Covered | T6,T23,T29 |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T6,T23,T29 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[38])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[39])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 400
EXPRESSION (jtag_en ? jtag_rsp.tdo : out_core_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 401
EXPRESSION (jtag_en ? jtag_rsp.tdo_oe : oe_core_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[38])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[39])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[38])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[39])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 412
EXPRESSION
Number Term
1 jtag_en ? ('{schmitt_en:1'b1, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0}) : attr_core_i[38])
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 412
EXPRESSION
Number Term
1 jtag_en ? ('{schmitt_en:1'b1, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0, (*adjust*)default:'0}) : attr_core_i[39])
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 414
EXPRESSION (jtag_en ? '0 : attr_core_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 414
EXPRESSION (jtag_en ? '0 : attr_core_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
LINE 414
EXPRESSION (jtag_en ? '0 : attr_core_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T34,T29,T57 |
Branch Coverage for Module :
pinmux_strap_sampling
| Line No. | Total | Covered | Percent |
Branches |
|
59 |
58 |
98.31 |
TERNARY |
230 |
2 |
2 |
100.00 |
TERNARY |
232 |
2 |
2 |
100.00 |
TERNARY |
236 |
2 |
2 |
100.00 |
TERNARY |
396 |
2 |
2 |
100.00 |
TERNARY |
404 |
2 |
2 |
100.00 |
TERNARY |
405 |
2 |
2 |
100.00 |
TERNARY |
414 |
2 |
2 |
100.00 |
TERNARY |
396 |
2 |
2 |
100.00 |
TERNARY |
400 |
2 |
2 |
100.00 |
TERNARY |
401 |
2 |
2 |
100.00 |
TERNARY |
414 |
2 |
2 |
100.00 |
TERNARY |
396 |
2 |
2 |
100.00 |
TERNARY |
404 |
2 |
2 |
100.00 |
TERNARY |
405 |
2 |
2 |
100.00 |
TERNARY |
414 |
2 |
2 |
100.00 |
TERNARY |
396 |
2 |
2 |
100.00 |
TERNARY |
404 |
2 |
2 |
100.00 |
TERNARY |
405 |
2 |
2 |
100.00 |
TERNARY |
412 |
2 |
2 |
100.00 |
TERNARY |
396 |
2 |
2 |
100.00 |
TERNARY |
404 |
2 |
2 |
100.00 |
TERNARY |
405 |
2 |
2 |
100.00 |
TERNARY |
412 |
2 |
2 |
100.00 |
IF |
268 |
2 |
2 |
100.00 |
IF |
274 |
3 |
3 |
100.00 |
IF |
283 |
2 |
2 |
100.00 |
CASE |
321 |
6 |
5 |
83.33 |
230 assign tap_strap_d[0] = (lc_strap_sample_en) ? in_padring_i[TargetCfg.tap_strap0_idx] :
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T1,T2,T3 |
0 |
Covered |
T1,T2,T3 |
232 assign tap_strap_d[1] = (rv_strap_sample_en) ? in_padring_i[TargetCfg.tap_strap1_idx] :
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T1,T2,T3 |
0 |
Covered |
T1,T2,T3 |
236 assign dft_strap_d = (dft_strap_sample_en) ? {in_padring_i[TargetCfg.dft_strap1_idx],
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T1,T2,T3 |
0 |
Covered |
T1,T2,T3 |
396 assign in_core_o[k] = (jtag_en) ? 1'b0 : in_padring_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
404 assign out_padring_o[k] = (jtag_en) ? 1'b0 : out_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
405 assign oe_padring_o[k] = (jtag_en) ? 1'b0 : oe_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
414 assign attr_padring_o[k] = (jtag_en) ? '0 : attr_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
396 assign in_core_o[k] = (jtag_en) ? 1'b0 : in_padring_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
400 assign out_padring_o[k] = (jtag_en) ? jtag_rsp.tdo : out_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
401 assign oe_padring_o[k] = (jtag_en) ? jtag_rsp.tdo_oe : oe_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
414 assign attr_padring_o[k] = (jtag_en) ? '0 : attr_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
396 assign in_core_o[k] = (jtag_en) ? 1'b0 : in_padring_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
404 assign out_padring_o[k] = (jtag_en) ? 1'b0 : out_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
405 assign oe_padring_o[k] = (jtag_en) ? 1'b0 : oe_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
414 assign attr_padring_o[k] = (jtag_en) ? '0 : attr_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
396 assign in_core_o[k] = (jtag_en) ? 1'b0 : in_padring_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
404 assign out_padring_o[k] = (jtag_en) ? 1'b0 : out_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
405 assign oe_padring_o[k] = (jtag_en) ? 1'b0 : oe_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
412 assign attr_padring_o[k] = (jtag_en) ? '{schmitt_en: 1'b1, default: '0} : attr_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
396 assign in_core_o[k] = (jtag_en) ? 1'b0 : in_padring_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
404 assign out_padring_o[k] = (jtag_en) ? 1'b0 : out_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
405 assign oe_padring_o[k] = (jtag_en) ? 1'b0 : oe_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
412 assign attr_padring_o[k] = (jtag_en) ? '{schmitt_en: 1'b1, default: '0} : attr_core_i[k];
-1-
==>
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T34,T29,T57 |
0 |
Covered |
T1,T2,T3 |
268 if (strap_en_q && tap_sampling_en) begin
-1-
269 dft_strap_sample_en = 1'b1;
==>
270 end
MISSING_ELSE
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T1,T2,T3 |
0 |
Covered |
T1,T2,T3 |
274 if (strap_en_q || tap_sampling_en) begin
-1-
275 lc_strap_sample_en = 1'b1;
276 if (lc_tx_test_true_strict(pinmux_hw_debug_en[HwDebugEnSample])) begin
-2-
277 rv_strap_sample_en = 1'b1;
==>
278 end
MISSING_ELSE
==>
279 end
MISSING_ELSE
==>
Branches:
-1- | -2- | Status | Tests |
1 |
1 |
Covered |
T1,T2,T3 |
1 |
0 |
Covered |
T1,T2,T3 |
0 |
- |
Covered |
T6,T23,T29 |
283 if (!rst_ni) begin
-1-
284 tap_strap_q <= '0;
==>
285 dft_strap_q <= '0;
286 dft_strap_valid_q <= 1'b0;
287 strap_en_q <= 1'b0;
288 end else begin
289 tap_strap_q <= tap_strap_d;
==>
Branches:
-1- | Status | Tests |
1 |
Covered |
T1,T2,T3 |
0 |
Covered |
T1,T2,T3 |
321 unique case (tap_strap)
-1-
322 LcTapSel: begin
323 lc_jtag_req = jtag_req;
==>
324 jtag_rsp = lc_jtag_rsp;
325 jtag_en = 1'b1;
326 end
327 RvTapSel: begin
328 if (lc_tx_test_true_strict(pinmux_hw_debug_en[HwDebugEnTapSel])) begin
-2-
329 rv_jtag_req = jtag_req;
==>
330 jtag_rsp = rv_jtag_rsp;
331 jtag_en = 1'b1;
332 end
MISSING_ELSE
==>
333 end
334 DftTapSel: begin
335 if (lc_tx_test_true_strict(lc_dft_en[DftEnTapSel])) begin
-3-
336 dft_jtag_req = jtag_req;
==>
337 jtag_rsp = dft_jtag_rsp;
338 jtag_en = 1'b1;
339 end
MISSING_ELSE
==>
340 end
341 default: ;
==>
Branches:
-1- | -2- | -3- | Status | Tests |
LcTapSel |
- |
- |
Covered |
T34,T29,T57 |
RvTapSel |
1 |
- |
Covered |
T87,T88,T89 |
RvTapSel |
0 |
- |
Covered |
T89,T629,T630 |
DftTapSel |
- |
1 |
Covered |
T84,T85,T92 |
DftTapSel |
- |
0 |
Not Covered |
|
default |
- |
- |
Covered |
T1,T2,T3 |
Assert Coverage for Module :
pinmux_strap_sampling
Assertion Details
DftTapOff0_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122322034 |
37769467 |
0 |
276 |
T1 |
11041 |
2484 |
0 |
0 |
T2 |
22580 |
2483 |
0 |
0 |
T3 |
28424 |
2482 |
0 |
0 |
T4 |
27950 |
2482 |
0 |
0 |
T5 |
30991 |
2482 |
0 |
0 |
T6 |
28994 |
28553 |
0 |
2 |
T23 |
0 |
0 |
0 |
2 |
T29 |
0 |
0 |
0 |
2 |
T30 |
23299 |
2484 |
0 |
0 |
T36 |
0 |
0 |
0 |
2 |
T37 |
0 |
0 |
0 |
2 |
T57 |
0 |
0 |
0 |
2 |
T68 |
53404 |
2481 |
0 |
0 |
T82 |
0 |
0 |
0 |
2 |
T104 |
24805 |
2481 |
0 |
0 |
T105 |
17024 |
2484 |
0 |
0 |
T199 |
0 |
0 |
0 |
2 |
T201 |
0 |
0 |
0 |
2 |
T202 |
0 |
0 |
0 |
2 |
LcHwDebugEnClear_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122322034 |
11934624 |
0 |
15 |
T8 |
64765 |
0 |
0 |
0 |
T29 |
17320 |
2303 |
0 |
1 |
T36 |
22781 |
1322 |
0 |
1 |
T37 |
0 |
1459 |
0 |
1 |
T38 |
54869 |
0 |
0 |
0 |
T43 |
0 |
5103 |
0 |
0 |
T57 |
10991 |
886 |
0 |
1 |
T59 |
42853 |
0 |
0 |
0 |
T81 |
0 |
5097 |
0 |
0 |
T82 |
10729 |
687 |
0 |
1 |
T83 |
0 |
14552 |
0 |
0 |
T132 |
55780 |
0 |
0 |
0 |
T189 |
24951 |
0 |
0 |
0 |
T201 |
0 |
1650 |
0 |
1 |
T229 |
0 |
4928 |
0 |
0 |
T231 |
46548 |
0 |
0 |
0 |
T288 |
0 |
0 |
0 |
1 |
T631 |
0 |
0 |
0 |
1 |
T632 |
0 |
0 |
0 |
1 |
T633 |
0 |
0 |
0 |
1 |
LcHwDebugEnSetRev0_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122322034 |
1430 |
0 |
98 |
T1 |
11041 |
1 |
0 |
0 |
T2 |
22580 |
1 |
0 |
0 |
T3 |
28424 |
1 |
0 |
0 |
T4 |
27950 |
1 |
0 |
0 |
T5 |
30991 |
1 |
0 |
0 |
T6 |
28994 |
0 |
0 |
1 |
T23 |
0 |
0 |
0 |
1 |
T29 |
0 |
0 |
0 |
1 |
T30 |
23299 |
1 |
0 |
0 |
T36 |
0 |
0 |
0 |
1 |
T37 |
0 |
0 |
0 |
1 |
T57 |
0 |
0 |
0 |
1 |
T68 |
53404 |
1 |
0 |
0 |
T82 |
0 |
0 |
0 |
1 |
T104 |
24805 |
1 |
0 |
0 |
T105 |
17024 |
1 |
0 |
0 |
T121 |
0 |
1 |
0 |
0 |
T197 |
0 |
0 |
0 |
1 |
T200 |
0 |
0 |
0 |
1 |
T201 |
0 |
0 |
0 |
1 |
LcHwDebugEnSetRev1_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122322034 |
1430 |
0 |
98 |
T1 |
11041 |
1 |
0 |
0 |
T2 |
22580 |
1 |
0 |
0 |
T3 |
28424 |
1 |
0 |
0 |
T4 |
27950 |
1 |
0 |
0 |
T5 |
30991 |
1 |
0 |
0 |
T6 |
28994 |
0 |
0 |
1 |
T23 |
0 |
0 |
0 |
1 |
T29 |
0 |
0 |
0 |
1 |
T30 |
23299 |
1 |
0 |
0 |
T36 |
0 |
0 |
0 |
1 |
T37 |
0 |
0 |
0 |
1 |
T57 |
0 |
0 |
0 |
1 |
T68 |
53404 |
1 |
0 |
0 |
T82 |
0 |
0 |
0 |
1 |
T104 |
24805 |
1 |
0 |
0 |
T105 |
17024 |
1 |
0 |
0 |
T121 |
0 |
1 |
0 |
0 |
T197 |
0 |
0 |
0 |
1 |
T200 |
0 |
0 |
0 |
1 |
T201 |
0 |
0 |
0 |
1 |
LcHwDebugEnSet_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122322034 |
1430 |
0 |
0 |
T1 |
11041 |
1 |
0 |
0 |
T2 |
22580 |
1 |
0 |
0 |
T3 |
28424 |
1 |
0 |
0 |
T4 |
27950 |
1 |
0 |
0 |
T5 |
30991 |
1 |
0 |
0 |
T6 |
28994 |
0 |
0 |
0 |
T30 |
23299 |
1 |
0 |
0 |
T68 |
53404 |
1 |
0 |
0 |
T104 |
24805 |
1 |
0 |
0 |
T105 |
17024 |
1 |
0 |
0 |
T121 |
0 |
1 |
0 |
0 |
RvTapOff0_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122322034 |
253 |
0 |
196 |
T6 |
28994 |
1 |
0 |
2 |
T7 |
39911 |
0 |
0 |
0 |
T11 |
30994 |
0 |
0 |
0 |
T23 |
20721 |
1 |
0 |
2 |
T25 |
20968 |
0 |
0 |
0 |
T28 |
47134 |
0 |
0 |
0 |
T29 |
0 |
2 |
0 |
2 |
T34 |
17832 |
0 |
0 |
0 |
T36 |
0 |
1 |
0 |
2 |
T37 |
0 |
2 |
0 |
2 |
T42 |
0 |
1 |
0 |
0 |
T57 |
0 |
1 |
0 |
2 |
T82 |
0 |
1 |
0 |
2 |
T121 |
21745 |
0 |
0 |
0 |
T197 |
0 |
0 |
0 |
2 |
T200 |
0 |
0 |
0 |
2 |
T201 |
0 |
2 |
0 |
2 |
T202 |
0 |
2 |
0 |
0 |
T264 |
33915 |
0 |
0 |
0 |
T423 |
19692 |
0 |
0 |
0 |
RvTapOff1_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122322034 |
34845486 |
0 |
0 |
T1 |
11041 |
2905 |
0 |
0 |
T2 |
22580 |
2829 |
0 |
0 |
T3 |
28424 |
2706 |
0 |
0 |
T4 |
27950 |
3053 |
0 |
0 |
T5 |
30991 |
2668 |
0 |
0 |
T6 |
28994 |
28555 |
0 |
0 |
T30 |
23299 |
3105 |
0 |
0 |
T68 |
53404 |
2735 |
0 |
0 |
T104 |
24805 |
2930 |
0 |
0 |
T105 |
17024 |
2828 |
0 |
0 |
TapStrapKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122322034 |
121637764 |
0 |
0 |
T1 |
11041 |
10513 |
0 |
0 |
T2 |
22580 |
22245 |
0 |
0 |
T3 |
28424 |
28018 |
0 |
0 |
T4 |
27950 |
26976 |
0 |
0 |
T5 |
30991 |
30702 |
0 |
0 |
T6 |
28994 |
28555 |
0 |
0 |
T30 |
23299 |
22636 |
0 |
0 |
T68 |
53404 |
53009 |
0 |
0 |
T104 |
24805 |
24018 |
0 |
0 |
T105 |
17024 |
16662 |
0 |
0 |
dft_strap0_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T68 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
dft_strap1_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T68 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
tap_strap0_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T68 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
tap_strap1_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T68 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
tck_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T68 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
tdi_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T68 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
tdo_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T68 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
tms_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T68 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
trst_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1010 |
1010 |
0 |
0 |
T1 |
1 |
1 |
0 |
0 |
T2 |
1 |
1 |
0 |
0 |
T3 |
1 |
1 |
0 |
0 |
T4 |
1 |
1 |
0 |
0 |
T5 |
1 |
1 |
0 |
0 |
T6 |
1 |
1 |
0 |
0 |
T30 |
1 |
1 |
0 |
0 |
T68 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |