Good morning Luke,
Another thing we can do with scan mode would be something like the below
masking:
input CLK, RESET_N;
input TESTMODE;
input SCANOUT_INTERNAL;
output SCANOUT_PAD;
reg gating;
wire n_gating = gating && TESTMODE;
always_ff @(posedge CLK, negedge RESET_N) begin
if (!RESET_N) gating <= 1'b1; /*RESET-HIGH*/
else gating <= n_gating; end
assign SCANOUT_PAD = SCANOUT_INTERNAL && gating;
The `gating` means that after reset, if we are not in test mode, `gating`
becomes 0 permanently and prevents any scan data from being extracted.
Assuming scan is not used in normal operation (it should not) then inadvertent
ESD noise on the `gating` flip-flop would not have an effect.
Output being combinational should be fine as the output is "just" an AND gate,
as long as `gating` does not transition from 0->1 (impossible in normal
operation, only at reset condition) then glitching is impossible, and when scan
is running then `TESTMODE` should not be exited which means `gating` should
remain high as well, thus output is still glitch-free.
Since the flip-flop resets to 1, and in some technologies I have seen a
reset-to-0 FF is slightly smaller than a reset-to-1 FF, it might do good to
invert the sense of `gating` instead, and use a NOR gate at the output (which
might also be smaller than an AND gate, look it up in the technology you are
targeting).
On the other hand the above is a tiny circuit already and it is unlikely you
need more than one of it (well for large enough ICs you might want more than
one scan chain but still, even the largest ICs we handled never had more than 8
scan chains, usually just 4 to 6) so overoptimizing this is not necessary.
Regards,
ZmnSCPxj
_______________________________________________
bitcoin-dev mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev