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: T44 T45 T32
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: T85 T86 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: T36 T32 T33
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: T36 T32 T33
324 1/1 jtag_rsp = lc_jtag_rsp;
Tests: T36 T32 T33
325 1/1 jtag_en = 1'b1;
Tests: T36 T32 T33
326 end
327 RvTapSel: begin
328 1/1 if (lc_tx_test_true_strict(pinmux_hw_debug_en[HwDebugEnTapSel])) begin
Tests: T86 T88 T89
329 1/1 rv_jtag_req = jtag_req;
Tests: T86 T88 T89
330 1/1 jtag_rsp = rv_jtag_rsp;
Tests: T86 T88 T89
331 1/1 jtag_en = 1'b1;
Tests: T86 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: T85 T86 T91
336 1/1 dft_jtag_req = jtag_req;
Tests: T85 T86 T91
337 1/1 jtag_rsp = dft_jtag_rsp;
Tests: T85 T86 T91
338 1/1 jtag_en = 1'b1;
Tests: T85 T86 T91
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: T13 T36 T32
372 1/1 assign jtag_req.tms = in_padring_i[TargetCfg.tms_idx];
Tests: T13 T36 T32
373 1/1 assign jtag_req.tdi = in_padring_i[TargetCfg.tdi_idx];
Tests: T13 T36 T32
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: T13 T36 T32 | T13 T36 T32 | T13 T36 T32 | T13 T36 T32 | T13 T36 T32
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: T13 T36 T32
401 1/1 assign oe_padring_o[k] = (jtag_en) ? jtag_rsp.tdo_oe : oe_core_i[k];
Tests: T13 T36 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: T36 T32 T33 | T36 T32 T33 | T36 T32 T33 | T13 T36 T32
405 4/4 assign oe_padring_o[k] = (jtag_en) ? 1'b0 : oe_core_i[k];
Tests: T13 T36 T32 | T36 T32 T33 | T36 T32 T33 | T13 T36 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: T36 T32 T33 | T36 T32 T33
413 end else begin : gen_no_schmitt
414 3/3 assign attr_padring_o[k] = (jtag_en) ? '0 : attr_core_i[k];
Tests: T36 T32 T33 | T36 T32 T33 | T36 T32 T33
415 end
416 end else begin : gen_other_inputs
417 58/58 assign attr_padring_o[k] = attr_core_i[k];
Tests: T23 T24 T25 | T23 T24 T25 | T10 T47 T48 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T14 T51 T52 | T23 T24 T25 | T10 T47 T48 | T10 T11 T12 | T23 T24 T25 | T10 T11 T12 | T10 T22 T47 | T10 T22 T47 | T10 T22 T47 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T56 T53 T57 | T56 T53 T57 | T56 T53 T57 | T1 T2 T3 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T1 T2 T3 | T1 T2 T3 | T10 T11 T12 | T10 T11 T12 | T10 T11 T12 | T10 T11 T12 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T23 T24 T25 | T18 T49 T50 | T18 T49 T50 | T23 T24 T25 | T23 T24 T25 | T10 T47 T48 | T10 T47 T48
418 58/58 assign in_core_o[k] = in_padring_i[k];
Tests: T13 T29 T30 | T13 T29 T30 | T10 T13 T29 | T13 T29 T30 | T13 T29 T30 | T13 T29 T30 | T13 T29 T30 | T13 T5 T14 | T13 T5 T29 | T10 T13 T26 | T10 T13 T11 | T13 T5 T37 | T10 T13 T11 | T10 T13 T5 | T1 T2 T3 | T10 T13 T30 | T13 T30 T15 | T13 T30 T31 | T4 T13 T30 | T4 T13 T30 | T4 T13 T30 | T4 T13 T30 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T1 T2 T3 | T13 T32 T33 | T7 T13 T34 | T1 T2 T3 | T13 T30 T31 | T13 T30 T35 | T13 T30 T35 | T13 T30 T35 | T1 T2 T3 | T13 T30 T15 | T1 T2 T3 | T13 T30 T37 | T13 T30 T37 | T13 T30 T37 | T13 T30 T31 | T7 T34 T8 | T7 T8 T9 | T10 T13 T11 | T10 T13 T11 | T10 T13 T11 | T10 T13 T11 | T13 T5 T14 | T13 T5 T14 | T13 T5 T14 | T13 T5 T14 | T26 T31 T15 | T13 T26 T31 | T13 T5 T14 | T13 T5 T26 | T10 T13 T11 | T10 T13 T5
419 56/58 ==> assign out_padring_o[k] = out_core_i[k];
Tests: T29 T30 T41 | T29 T30 T39 | T13 T29 T30 | T29 T30 T41 | T29 T30 T41 | T29 T30 T65 | T13 T29 T30 | T29 T30 T41 | T30 T41 T20 | T13 T11 T12 | T10 T22 T20 | T22 T21 T73 | T47 T21 T23 | T22 T21 T73 | T1 T2 T3 | T13 T30 T22 | T30 T15 T18 | T30 T22 T41 | T4 T30 T15 | T4 T30 T35 | T13 T30 T35 | T30 T35 T74 | T21 T23 T24 | T13 T20 T23 | T20 T21 T23 | T21 T23 T24 | T1 T2 T3 | T21 T23 T24 | T13 T23 T24 | T13 T15 T17 | T13 T20 T21 | T13 T30 T15 | T13 T30 T35 | T30 T35 T74 | T30 T35 T74 | T30 T15 T17 | T13 T30 T15 | T30 T22 T41 | T30 T22 T41 | T30 T22 T41 | T30 T41 T42 | T30 T22 T41 | T7 T8 T9 | T7 T8 T9 | T10 T11 T12 | T13 T11 T12 | T11 T12 T22 | T11 T12 T22 | T5 T11 T12 | T5 T14 T11 | T13 T5 T11 | T5 T11 T12 | T15 T16 T17 | T13 T15 T18 | T10 T11 T12 | T10 T13 T11
420 58/58 assign oe_padring_o[k] = oe_core_i[k];
Tests: T13 T29 T30 | T13 T29 T30 | T13 T29 T30 | T29 T30 T41 | T29 T30 T41 | T13 T29 T30 | T13 T29 T30 | T5 T29 T30 | T13 T30 T60 | T13 T22 T47 | T13 T22 T20 | T13 T22 T20 | T22 T20 T47 | T22 T21 T73 | T1 T2 T3 | T13 T30 T22 | T13 T30 T15 | T30 T22 T41 | T4 T13 T30 | T4 T13 T30 | T4 T13 T30 | T4 T30 T63 | T13 T20 T21 | T13 T20 T23 | T20 T21 T23 | T13 T20 T21 | T1 T2 T3 | T21 T23 T24 | T13 T20 T21 | T13 T15 T17 | T13 T20 T21 | T13 T30 T15 | T13 T30 T35 | T13 T30 T35 | T30 T35 T74 | T13 T30 T15 | T13 T30 T15 | T30 T22 T41 | T30 T22 T41 | T30 T22 T41 | T30 T41 T20 | T13 T30 T22 | T13 T8 T19 | T13 T8 T19 | T10 T11 T12 | T13 T20 T21 | T20 T21 T23 | T20 T21 T23 | T5 T11 T22 | T13 T5 T14 | T13 T5 T11 | T5 T11 T22 | T26 T27 T28 | T26 T20 T27 | T23 T24 T25 | T23 T24 T25 | T10 T11 T12 | 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 | T13,T26,T32 |
1 | 1 | Covered | T1,T2,T3 |
LINE 274
EXPRESSION (strap_en_q || tap_sampling_en)
-----1---- -------2-------
-1- | -2- | Status | Tests |
0 | 0 | Covered | T13,T44,T26 |
0 | 1 | Covered | T1,T2,T3 |
1 | 0 | Covered | T13,T26,T32 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[38])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 396
EXPRESSION (jtag_en ? 1'b0 : in_padring_i[39])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 400
EXPRESSION (jtag_en ? jtag_rsp.tdo : out_core_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 401
EXPRESSION (jtag_en ? jtag_rsp.tdo_oe : oe_core_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[38])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 404
EXPRESSION (jtag_en ? 1'b0 : out_core_i[39])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[38])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 405
EXPRESSION (jtag_en ? 1'b0 : oe_core_i[39])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
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 | T36,T32,T33 |
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 | T36,T32,T33 |
LINE 414
EXPRESSION (jtag_en ? '0 : attr_core_i[35])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 414
EXPRESSION (jtag_en ? '0 : attr_core_i[36])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
LINE 414
EXPRESSION (jtag_en ? '0 : attr_core_i[37])
---1---
-1- | Status | Tests |
0 | Covered | T1,T2,T3 |
1 | Covered | T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T36,T32,T33 |
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 |
T13,T44,T26 |
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 |
T36,T32,T33 |
RvTapSel |
1 |
- |
Covered |
T86,T88,T89 |
RvTapSel |
0 |
- |
Covered |
T90,T621,T622 |
DftTapSel |
- |
1 |
Covered |
T85,T86,T91 |
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 |
123557908 |
37119181 |
0 |
282 |
T1 |
10888 |
2484 |
0 |
0 |
T2 |
16385 |
2484 |
0 |
0 |
T3 |
19587 |
2481 |
0 |
0 |
T4 |
21123 |
2484 |
0 |
0 |
T5 |
35865 |
2482 |
0 |
0 |
T7 |
20821 |
2484 |
0 |
0 |
T10 |
27421 |
2482 |
0 |
0 |
T13 |
22056 |
21471 |
0 |
2 |
T26 |
0 |
0 |
0 |
2 |
T32 |
0 |
0 |
0 |
2 |
T33 |
0 |
0 |
0 |
2 |
T58 |
0 |
0 |
0 |
2 |
T106 |
22328 |
2484 |
0 |
0 |
T107 |
20852 |
2482 |
0 |
0 |
T189 |
0 |
0 |
0 |
2 |
T190 |
0 |
0 |
0 |
2 |
T191 |
0 |
0 |
0 |
2 |
T194 |
0 |
0 |
0 |
2 |
T212 |
0 |
0 |
0 |
2 |
LcHwDebugEnClear_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
123557908 |
11911226 |
0 |
15 |
T14 |
38050 |
0 |
0 |
0 |
T26 |
31929 |
0 |
0 |
0 |
T29 |
25131 |
0 |
0 |
0 |
T32 |
15413 |
1617 |
0 |
1 |
T33 |
15595 |
1839 |
0 |
1 |
T34 |
22353 |
0 |
0 |
0 |
T36 |
19347 |
0 |
0 |
0 |
T44 |
59886 |
4983 |
0 |
0 |
T45 |
61201 |
5105 |
0 |
0 |
T58 |
0 |
1313 |
0 |
1 |
T84 |
0 |
5092 |
0 |
0 |
T182 |
24292 |
0 |
0 |
0 |
T189 |
0 |
920 |
0 |
1 |
T190 |
0 |
535 |
0 |
1 |
T194 |
0 |
1417 |
0 |
1 |
T212 |
0 |
2173 |
0 |
0 |
T282 |
0 |
0 |
0 |
1 |
T623 |
0 |
0 |
0 |
1 |
T624 |
0 |
0 |
0 |
1 |
T625 |
0 |
0 |
0 |
1 |
LcHwDebugEnSetRev0_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
123557908 |
1421 |
0 |
100 |
T1 |
10888 |
1 |
0 |
0 |
T2 |
16385 |
1 |
0 |
0 |
T3 |
19587 |
1 |
0 |
0 |
T4 |
21123 |
1 |
0 |
0 |
T5 |
35865 |
1 |
0 |
0 |
T6 |
0 |
1 |
0 |
0 |
T7 |
20821 |
1 |
0 |
0 |
T10 |
27421 |
1 |
0 |
0 |
T13 |
22056 |
0 |
0 |
1 |
T26 |
0 |
0 |
0 |
1 |
T32 |
0 |
0 |
0 |
1 |
T33 |
0 |
0 |
0 |
1 |
T58 |
0 |
0 |
0 |
1 |
T106 |
22328 |
1 |
0 |
0 |
T107 |
20852 |
1 |
0 |
0 |
T189 |
0 |
0 |
0 |
1 |
T190 |
0 |
0 |
0 |
1 |
T191 |
0 |
0 |
0 |
1 |
T194 |
0 |
0 |
0 |
1 |
T239 |
0 |
0 |
0 |
1 |
LcHwDebugEnSetRev1_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
123557908 |
1421 |
0 |
100 |
T1 |
10888 |
1 |
0 |
0 |
T2 |
16385 |
1 |
0 |
0 |
T3 |
19587 |
1 |
0 |
0 |
T4 |
21123 |
1 |
0 |
0 |
T5 |
35865 |
1 |
0 |
0 |
T6 |
0 |
1 |
0 |
0 |
T7 |
20821 |
1 |
0 |
0 |
T10 |
27421 |
1 |
0 |
0 |
T13 |
22056 |
0 |
0 |
1 |
T26 |
0 |
0 |
0 |
1 |
T32 |
0 |
0 |
0 |
1 |
T33 |
0 |
0 |
0 |
1 |
T58 |
0 |
0 |
0 |
1 |
T106 |
22328 |
1 |
0 |
0 |
T107 |
20852 |
1 |
0 |
0 |
T189 |
0 |
0 |
0 |
1 |
T190 |
0 |
0 |
0 |
1 |
T191 |
0 |
0 |
0 |
1 |
T194 |
0 |
0 |
0 |
1 |
T239 |
0 |
0 |
0 |
1 |
LcHwDebugEnSet_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
123557908 |
1421 |
0 |
0 |
T1 |
10888 |
1 |
0 |
0 |
T2 |
16385 |
1 |
0 |
0 |
T3 |
19587 |
1 |
0 |
0 |
T4 |
21123 |
1 |
0 |
0 |
T5 |
35865 |
1 |
0 |
0 |
T6 |
0 |
1 |
0 |
0 |
T7 |
20821 |
1 |
0 |
0 |
T10 |
27421 |
1 |
0 |
0 |
T13 |
22056 |
0 |
0 |
0 |
T106 |
22328 |
1 |
0 |
0 |
T107 |
20852 |
1 |
0 |
0 |
RvTapOff0_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
123557908 |
253 |
0 |
200 |
T5 |
35865 |
0 |
0 |
0 |
T6 |
24364 |
0 |
0 |
0 |
T13 |
22056 |
1 |
0 |
2 |
T14 |
38050 |
0 |
0 |
0 |
T26 |
0 |
1 |
0 |
2 |
T29 |
25131 |
0 |
0 |
0 |
T32 |
0 |
2 |
0 |
2 |
T33 |
0 |
2 |
0 |
2 |
T34 |
22353 |
0 |
0 |
0 |
T36 |
19347 |
0 |
0 |
0 |
T38 |
0 |
1 |
0 |
0 |
T44 |
59886 |
0 |
0 |
0 |
T58 |
0 |
1 |
0 |
2 |
T72 |
51087 |
0 |
0 |
0 |
T107 |
20852 |
0 |
0 |
0 |
T189 |
0 |
1 |
0 |
2 |
T190 |
0 |
1 |
0 |
2 |
T191 |
0 |
0 |
0 |
2 |
T194 |
0 |
1 |
0 |
2 |
T212 |
0 |
1 |
0 |
0 |
T239 |
0 |
0 |
0 |
2 |
RvTapOff1_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
123557908 |
33953048 |
0 |
0 |
T1 |
10888 |
2863 |
0 |
0 |
T2 |
16385 |
2816 |
0 |
0 |
T3 |
19587 |
3046 |
0 |
0 |
T4 |
21123 |
3169 |
0 |
0 |
T5 |
35865 |
2716 |
0 |
0 |
T7 |
20821 |
2993 |
0 |
0 |
T10 |
27421 |
2866 |
0 |
0 |
T13 |
22056 |
21473 |
0 |
0 |
T106 |
22328 |
3370 |
0 |
0 |
T107 |
20852 |
2912 |
0 |
0 |
TapStrapKnown_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
123557908 |
122892389 |
0 |
0 |
T1 |
10888 |
10504 |
0 |
0 |
T2 |
16385 |
16041 |
0 |
0 |
T3 |
19587 |
18666 |
0 |
0 |
T4 |
21123 |
20381 |
0 |
0 |
T5 |
35865 |
35437 |
0 |
0 |
T7 |
20821 |
20229 |
0 |
0 |
T10 |
27421 |
26834 |
0 |
0 |
T13 |
22056 |
21473 |
0 |
0 |
T106 |
22328 |
21339 |
0 |
0 |
T107 |
20852 |
20097 |
0 |
0 |
dft_strap0_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1015 |
1015 |
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 |
T7 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T106 |
1 |
1 |
0 |
0 |
T107 |
1 |
1 |
0 |
0 |
dft_strap1_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1015 |
1015 |
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 |
T7 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T106 |
1 |
1 |
0 |
0 |
T107 |
1 |
1 |
0 |
0 |
tap_strap0_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1015 |
1015 |
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 |
T7 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T106 |
1 |
1 |
0 |
0 |
T107 |
1 |
1 |
0 |
0 |
tap_strap1_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1015 |
1015 |
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 |
T7 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T106 |
1 |
1 |
0 |
0 |
T107 |
1 |
1 |
0 |
0 |
tck_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1015 |
1015 |
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 |
T7 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T106 |
1 |
1 |
0 |
0 |
T107 |
1 |
1 |
0 |
0 |
tdi_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1015 |
1015 |
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 |
T7 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T106 |
1 |
1 |
0 |
0 |
T107 |
1 |
1 |
0 |
0 |
tdo_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1015 |
1015 |
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 |
T7 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T106 |
1 |
1 |
0 |
0 |
T107 |
1 |
1 |
0 |
0 |
tms_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1015 |
1015 |
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 |
T7 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T106 |
1 |
1 |
0 |
0 |
T107 |
1 |
1 |
0 |
0 |
trst_idxRange_A
Name | Attempts | Real Successes | Failures | Incomplete |
Total |
1015 |
1015 |
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 |
T7 |
1 |
1 |
0 |
0 |
T10 |
1 |
1 |
0 |
0 |
T13 |
1 |
1 |
0 |
0 |
T106 |
1 |
1 |
0 |
0 |
T107 |
1 |
1 |
0 |
0 |