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: T31 T32 T57
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: T83 T657 T80
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: T35 T31 T32
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: T35 T31 T32
324 1/1 jtag_rsp = lc_jtag_rsp;
Tests: T35 T31 T32
325 1/1 jtag_en = 1'b1;
Tests: T35 T31 T32
326 end
327 RvTapSel: begin
328 1/1 if (lc_tx_test_true_strict(pinmux_hw_debug_en[HwDebugEnTapSel])) begin
Tests: T36 T83 T84
329 1/1 rv_jtag_req = jtag_req;
Tests: T36 T83 T84
330 1/1 jtag_rsp = rv_jtag_rsp;
Tests: T36 T83 T84
331 1/1 jtag_en = 1'b1;
Tests: T36 T83 T84
332 end
MISSING_ELSE
333 end
334 DftTapSel: begin
335 1/1 if (lc_tx_test_true_strict(lc_dft_en[DftEnTapSel])) begin
Tests: T83 T80 T87
336 1/1 dft_jtag_req = jtag_req;
Tests: T83 T80 T87
337 1/1 jtag_rsp = dft_jtag_rsp;
Tests: T83 T80 T87
338 1/1 jtag_en = 1'b1;
Tests: T83 T80 T87
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 T35 T31
372 1/1 assign jtag_req.tms = in_padring_i[TargetCfg.tms_idx];
Tests: T6 T35 T31
373 1/1 assign jtag_req.tdi = in_padring_i[TargetCfg.tdi_idx];
Tests: T6 T35 T31
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 T35 T31 | T6 T35 T31 | T6 T35 T31 | T6 T35 T31 | T6 T35 T31
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: T35 T31 T32
401 1/1 assign oe_padring_o[k] = (jtag_en) ? jtag_rsp.tdo_oe : oe_core_i[k];
Tests: T35 T31 T32
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: T6 T35 T31 | T35 T31 T32 | T35 T31 T32 | T35 T31 T32
405 4/4 assign oe_padring_o[k] = (jtag_en) ? 1'b0 : oe_core_i[k];
Tests: T6 T35 T31 | T35 T31 T32 | T6 T35 T31 | T35 T31 T32
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: T35 T31 T32 | T35 T31 T32
413 end else begin : gen_no_schmitt
414 3/3 assign attr_padring_o[k] = (jtag_en) ? '0 : attr_core_i[k];
Tests: T35 T31 T32 | T35 T31 T32 | T35 T31 T32
415 end
416 end else begin : gen_other_inputs
417 58/58 assign attr_padring_o[k] = attr_core_i[k];
Tests: T22 T23 T24 | T22 T23 T24 | T10 T46 T47 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T15 T50 T51 | T22 T23 T24 | T10 T46 T47 | T10 T11 T12 | T22 T23 T24 | T10 T11 T12 | T10 T13 T46 | T10 T13 T46 | T10 T13 T46 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T55 T56 T52 | T55 T56 T52 | T55 T56 T52 | T1 T2 T3 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T1 T2 T3 | T1 T2 T3 | T10 T11 T12 | T10 T11 T12 | T10 T11 T12 | T10 T11 T12 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T22 T23 T24 | T18 T48 T49 | T18 T48 T49 | T22 T23 T24 | T22 T23 T24 | T10 T46 T47 | T10 T46 T47
418 58/58 assign in_core_o[k] = in_padring_i[k];
Tests: T4 T6 T28 | T4 T6 T28 | T4 T6 T10 | T4 T6 T28 | T4 T6 T29 | T4 T6 T29 | T4 T6 T28 | T4 T6 T15 | T4 T6 T14 | T6 T10 T36 | T6 T10 T11 | T6 T14 T36 | T6 T10 T11 | T6 T10 T14 | T1 T2 T3 | T6 T10 T28 | T6 T28 T16 | T6 T28 T30 | T3 T6 T28 | T3 T6 T28 | T3 T6 T28 | T3 T6 T28 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T6 T31 T32 | T6 T33 T7 | T1 T2 T3 | T6 T28 T30 | T6 T28 T34 | T6 T28 T34 | T6 T28 T34 | T1 T2 T3 | T6 T28 T16 | T1 T2 T3 | T6 T28 T36 | T6 T28 T36 | T6 T28 T36 | T6 T28 T30 | T6 T33 T7 | T6 T7 T8 | T6 T10 T11 | T6 T10 T11 | T6 T10 T11 | T6 T10 T11 | T6 T15 T25 | T6 T15 T25 | T6 T15 T25 | T6 T15 T25 | T6 T25 T30 | T25 T30 T16 | T6 T15 T14 | T6 T25 T14 | T6 T10 T11 | T6 T10 T14
419 56/58 ==> assign out_padring_o[k] = out_core_i[k];
Tests: T4 T6 T28 | T4 T28 T39 | T4 T6 T28 | T4 T28 T41 | T4 T6 T28 | T4 T29 T28 | T4 T28 T41 | T4 T28 T41 | T6 T28 T41 | T6 T11 T12 | T10 T13 T46 | T6 T13 T38 | T38 T21 T47 | T13 T38 T21 | T1 T2 T3 | T28 T13 T41 | T28 T16 T18 | T28 T13 T41 | T3 T28 T16 | T3 T28 T34 | T3 T28 T34 | T3 T28 T34 | T6 T22 T23 | T6 T22 T23 | T22 T23 T24 | T6 T21 T22 | T1 T2 T3 | T22 T23 T24 | T22 T23 T24 | T16 T40 T227 | T22 T23 T24 | T28 T16 T40 | T28 T34 T127 | T28 T34 T127 | T6 T28 T34 | T6 T28 T16 | T6 T28 T16 | T28 T13 T41 | T6 T28 T13 | T6 T28 T13 | T6 T28 T41 | T28 T13 T41 | T6 T7 T8 | T7 T8 T9 | T6 T10 T11 | T11 T12 T13 | T11 T12 T13 | T6 T11 T12 | T14 T11 T12 | T15 T14 T11 | T14 T11 T12 | T6 T14 T11 | T6 T16 T17 | T16 T18 T17 | T10 T11 T12 | T6 T10 T11
420 58/58 assign oe_padring_o[k] = oe_core_i[k];
Tests: T4 T6 T28 | T4 T6 T28 | T4 T6 T28 | T4 T28 T41 | T4 T6 T28 | T4 T29 T28 | T4 T28 T41 | T4 T14 T58 | T6 T28 T59 | T6 T13 T38 | T6 T13 T47 | T6 T13 T38 | T13 T38 T21 | T6 T13 T38 | T1 T2 T3 | T28 T13 T41 | T6 T28 T16 | T6 T28 T13 | T3 T6 T28 | T3 T28 T60 | T3 T28 T62 | T3 T28 T62 | T6 T38 T21 | T6 T21 T22 | T6 T22 T23 | T6 T21 T22 | T1 T2 T3 | T6 T21 T22 | T38 T22 T23 | T16 T40 T38 | T22 T23 T24 | T6 T28 T16 | T6 T28 T34 | T6 T28 T34 | T6 T28 T34 | T6 T28 T16 | T6 T28 T16 | T6 T28 T13 | T6 T28 T13 | T6 T28 T13 | T6 T28 T41 | T6 T28 T13 | T9 T19 T20 | T9 T19 T20 | T6 T10 T11 | T21 T22 T23 | T21 T22 T23 | T6 T38 T21 | T14 T11 T13 | T15 T14 T11 | T14 T11 T13 | T6 T14 T11 | T25 T26 T21 | T25 T26 T27 | T22 T23 T24 | T22 T23 T24 | T6 T10 T11 | T10 T11 T12
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,T35,T25 |
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,T35,T25 |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T6,T35,T25 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[38])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[39])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 400
EXPRESSION (jtag_en ? jtag_rsp.tdo : out_core_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 401
EXPRESSION (jtag_en ? jtag_rsp.tdo_oe : oe_core_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[38])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[39])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[38])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[39])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
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 | T35,T31,T32 |
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 | T35,T31,T32 |
LINE 414
EXPRESSION (jtag_en ? '0 : attr_core_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 414
EXPRESSION (jtag_en ? '0 : attr_core_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
LINE 414
EXPRESSION (jtag_en ? '0 : attr_core_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T35,T31,T32 |
Branch Coverage for Module :
pinmux_strap_sampling
| Line No. | Total | Covered | Percent |
Branches |
|
59 |
59 |
100.00 |
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 |
6 |
100.00 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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 |
T35,T31,T32 |
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,T35,T25 |
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 |
T35,T31,T32 |
RvTapSel |
1 |
- |
Covered |
T36,T83,T84 |
RvTapSel |
0 |
- |
Covered |
T85,T658,T659 |
DftTapSel |
- |
1 |
Covered |
T83,T80,T87 |
DftTapSel |
- |
0 |
Covered |
T660,T661 |
default |
- |
- |
Covered |
T1,T2,T3 |
Assert Coverage for Module :
pinmux_strap_sampling
Assertion Details
DftTapOff0_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122580651 |
38354496 |
0 |
286 |
T1 |
10949 |
2482 |
0 |
0 |
T2 |
16423 |
2481 |
0 |
0 |
T3 |
20788 |
2482 |
0 |
0 |
T4 |
24012 |
2481 |
0 |
0 |
T5 |
24112 |
2483 |
0 |
0 |
T6 |
27742 |
27123 |
0 |
2 |
T15 |
29610 |
2483 |
0 |
0 |
T25 |
0 |
0 |
0 |
2 |
T31 |
0 |
0 |
0 |
2 |
T32 |
0 |
0 |
0 |
2 |
T33 |
23438 |
2484 |
0 |
0 |
T35 |
0 |
0 |
0 |
2 |
T57 |
0 |
0 |
0 |
2 |
T104 |
19888 |
2482 |
0 |
0 |
T105 |
18382 |
2482 |
0 |
0 |
T189 |
0 |
0 |
0 |
2 |
T190 |
0 |
0 |
0 |
2 |
T195 |
0 |
0 |
0 |
2 |
T201 |
0 |
0 |
0 |
2 |
LcHwDebugEnClear_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122580651 |
11888786 |
0 |
15 |
T8 |
40811 |
0 |
0 |
0 |
T31 |
15183 |
1716 |
0 |
1 |
T32 |
24160 |
1440 |
0 |
1 |
T45 |
59461 |
5100 |
0 |
0 |
T57 |
14797 |
1703 |
0 |
1 |
T58 |
59773 |
0 |
0 |
0 |
T78 |
0 |
5048 |
0 |
0 |
T79 |
0 |
4970 |
0 |
0 |
T130 |
56513 |
0 |
0 |
0 |
T131 |
52079 |
0 |
0 |
0 |
T181 |
21186 |
0 |
0 |
0 |
T189 |
9844 |
479 |
0 |
1 |
T190 |
0 |
899 |
0 |
1 |
T195 |
0 |
2208 |
0 |
0 |
T201 |
0 |
1385 |
0 |
1 |
T261 |
0 |
0 |
0 |
1 |
T662 |
0 |
0 |
0 |
1 |
T663 |
0 |
0 |
0 |
1 |
T664 |
0 |
0 |
0 |
1 |
LcHwDebugEnSetRev0_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122580651 |
1418 |
0 |
101 |
T1 |
10949 |
1 |
0 |
0 |
T2 |
16423 |
1 |
0 |
0 |
T3 |
20788 |
1 |
0 |
0 |
T4 |
24012 |
1 |
0 |
0 |
T5 |
24112 |
1 |
0 |
0 |
T6 |
27742 |
0 |
0 |
1 |
T10 |
0 |
1 |
0 |
0 |
T15 |
29610 |
1 |
0 |
0 |
T25 |
0 |
0 |
0 |
1 |
T31 |
0 |
0 |
0 |
1 |
T32 |
0 |
0 |
0 |
1 |
T33 |
23438 |
1 |
0 |
0 |
T35 |
0 |
0 |
0 |
1 |
T57 |
0 |
0 |
0 |
1 |
T104 |
19888 |
1 |
0 |
0 |
T105 |
18382 |
1 |
0 |
0 |
T189 |
0 |
0 |
0 |
1 |
T190 |
0 |
0 |
0 |
1 |
T192 |
0 |
0 |
0 |
1 |
T201 |
0 |
0 |
0 |
1 |
LcHwDebugEnSetRev1_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122580651 |
1418 |
0 |
101 |
T1 |
10949 |
1 |
0 |
0 |
T2 |
16423 |
1 |
0 |
0 |
T3 |
20788 |
1 |
0 |
0 |
T4 |
24012 |
1 |
0 |
0 |
T5 |
24112 |
1 |
0 |
0 |
T6 |
27742 |
0 |
0 |
1 |
T10 |
0 |
1 |
0 |
0 |
T15 |
29610 |
1 |
0 |
0 |
T25 |
0 |
0 |
0 |
1 |
T31 |
0 |
0 |
0 |
1 |
T32 |
0 |
0 |
0 |
1 |
T33 |
23438 |
1 |
0 |
0 |
T35 |
0 |
0 |
0 |
1 |
T57 |
0 |
0 |
0 |
1 |
T104 |
19888 |
1 |
0 |
0 |
T105 |
18382 |
1 |
0 |
0 |
T189 |
0 |
0 |
0 |
1 |
T190 |
0 |
0 |
0 |
1 |
T192 |
0 |
0 |
0 |
1 |
T201 |
0 |
0 |
0 |
1 |
LcHwDebugEnSet_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122580651 |
1418 |
0 |
0 |
T1 |
10949 |
1 |
0 |
0 |
T2 |
16423 |
1 |
0 |
0 |
T3 |
20788 |
1 |
0 |
0 |
T4 |
24012 |
1 |
0 |
0 |
T5 |
24112 |
1 |
0 |
0 |
T6 |
27742 |
0 |
0 |
0 |
T10 |
0 |
1 |
0 |
0 |
T15 |
29610 |
1 |
0 |
0 |
T33 |
23438 |
1 |
0 |
0 |
T104 |
19888 |
1 |
0 |
0 |
T105 |
18382 |
1 |
0 |
0 |
RvTapOff0_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122580651 |
254 |
0 |
202 |
T5 |
24112 |
0 |
0 |
0 |
T6 |
27742 |
1 |
0 |
2 |
T7 |
23237 |
0 |
0 |
0 |
T10 |
22879 |
0 |
0 |
0 |
T14 |
32056 |
0 |
0 |
0 |
T15 |
29610 |
0 |
0 |
0 |
T25 |
27685 |
1 |
0 |
2 |
T31 |
0 |
2 |
0 |
2 |
T32 |
0 |
1 |
0 |
2 |
T33 |
23438 |
0 |
0 |
0 |
T35 |
9350 |
1 |
0 |
2 |
T37 |
0 |
1 |
0 |
0 |
T57 |
0 |
2 |
0 |
2 |
T105 |
18382 |
0 |
0 |
0 |
T189 |
0 |
1 |
0 |
2 |
T190 |
0 |
1 |
0 |
2 |
T192 |
0 |
0 |
0 |
2 |
T201 |
0 |
2 |
0 |
2 |
RvTapOff1_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122580651 |
35437518 |
0 |
0 |
T1 |
10949 |
2766 |
0 |
0 |
T2 |
16423 |
2840 |
0 |
0 |
T3 |
20788 |
2677 |
0 |
0 |
T4 |
24012 |
2779 |
0 |
0 |
T5 |
24112 |
3023 |
0 |
0 |
T6 |
27742 |
27125 |
0 |
0 |
T15 |
29610 |
3064 |
0 |
0 |
T33 |
23438 |
3248 |
0 |
0 |
T104 |
19888 |
2822 |
0 |
0 |
T105 |
18382 |
2807 |
0 |
0 |
TapStrapKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
122580651 |
121931276 |
0 |
0 |
T1 |
10949 |
10512 |
0 |
0 |
T2 |
16423 |
15872 |
0 |
0 |
T3 |
20788 |
20459 |
0 |
0 |
T4 |
24012 |
23491 |
0 |
0 |
T5 |
24112 |
23590 |
0 |
0 |
T6 |
27742 |
27125 |
0 |
0 |
T15 |
29610 |
28893 |
0 |
0 |
T33 |
23438 |
22714 |
0 |
0 |
T104 |
19888 |
19425 |
0 |
0 |
T105 |
18382 |
17958 |
0 |
0 |
dft_strap0_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1014 |
1014 |
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 |
T15 |
1 |
1 |
0 |
0 |
T33 |
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 |
1014 |
1014 |
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 |
T15 |
1 |
1 |
0 |
0 |
T33 |
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 |
1014 |
1014 |
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 |
T15 |
1 |
1 |
0 |
0 |
T33 |
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 |
1014 |
1014 |
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 |
T15 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
tck_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1014 |
1014 |
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 |
T15 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
tdi_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1014 |
1014 |
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 |
T15 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
tdo_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1014 |
1014 |
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 |
T15 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
tms_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1014 |
1014 |
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 |
T15 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |
trst_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1014 |
1014 |
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 |
T15 |
1 |
1 |
0 |
0 |
T33 |
1 |
1 |
0 |
0 |
T104 |
1 |
1 |
0 |
0 |
T105 |
1 |
1 |
0 |
0 |