WEBVTT

1
00:00:00.000 --> 00:00:03.585
The signature fails and the register stores zero.

2
00:00:03.585 --> 00:00:09.871
A pulse briefly inverts the observed value at
edge three, then ends before the request at edge

3
00:00:09.871 --> 00:00:10.274
four.

4
00:00:10.274 --> 00:00:14.707
No unauthorized fetch occurs, although no
detector was present.

5
00:00:14.707 --> 00:00:22.229
Fix the baseline: reset at edge zero,
verification at edge two, ready requests at edges

6
00:00:22.229 --> 00:00:26.326
four and six, and observation through edge seven.

7
00:00:26.326 --> 00:00:31.846
Both requests share one fault budget for the same
boot attempt.

8
00:00:32.167 --> 00:00:36.662
Checked records completion, while result stores
pass or fail.

9
00:00:36.662 --> 00:00:39.742
Grant ANDs checked with the observed result.

10
00:00:39.742 --> 00:00:46.306
Count accepted commit at a rising edge only when
fetch valid, receiver ready, and grant all hold.

11
00:00:46.306 --> 00:00:52.204
This is a simplified fetch handoff, not execution
or instruction retirement.

12
00:00:52.204 --> 00:00:57.551
A changed upstream value matters when it reaches
this acceptance edge.

13
00:00:57.875 --> 00:00:59.655
Separate two paths.

14
00:00:59.655 --> 00:01:06.439
A inverts the Q seen by downstream logic,
returning to normal when the control ends; the

15
00:01:06.439 --> 00:01:08.762
stored value does not change.

16
00:01:08.762 --> 00:01:14.337
B modifies storage, so later reads remain wrong
after its control ends.

17
00:01:14.337 --> 00:01:20.083
The name bit flip fits both, but what makes the
error disappear is different.

18
00:01:20.083 --> 00:01:26.029
Location, duration, and sampling time determine
what a request actually sees.

19
00:01:26.292 --> 00:01:33.557
A model card begins with the event to protect: an
unauthorized image must obtain no accepted fetch.

20
00:01:33.557 --> 00:01:36.877
Add initialization, requests, and deadline.

21
00:01:36.877 --> 00:01:43.431
For B, target the stored result, invert once, and
retain it until normal overwrite or reset.

22
00:01:43.431 --> 00:01:46.402
This is not a continually forced one.

23
00:01:46.402 --> 00:01:51.462
The state-transition experiment should be
reproducible from the card.

24
00:01:51.462 --> 00:01:56.292
Moving the target to clock or checker requires a
different card.

25
00:01:56.542 --> 00:02:01.662
At each edge, first sample old Q and grant and
record acceptance.

26
00:02:01.662 --> 00:02:04.486
Then update the registers normally.

27
00:02:04.486 --> 00:02:07.948
Finally apply B's inversion to the new state.

28
00:02:07.948 --> 00:02:14.448
An upset after edge three affects what edge four
reads; it cannot revise the event already

29
00:02:14.448 --> 00:02:16.074
recorded at edge three.

30
00:02:16.074 --> 00:02:22.849
Keep those phases separate instead of explaining
pre-update acceptance with post-update Q.

31
00:02:23.167 --> 00:02:28.541
An event count, location count, and bit count
impose different limits.

32
00:02:28.541 --> 00:02:34.665
One upset at edge three can affect requests at
four and six while remaining one event.

33
00:02:34.665 --> 00:02:39.322
Inversions at three and five are two events, even
on the same bit.

34
00:02:39.322 --> 00:02:45.173
The budget covers reset through edge seven and
restarts with another reset.

35
00:02:45.173 --> 00:02:51.987
Device-lifetime retry limits are a separate
product assumption; a per-attempt bound does not

36
00:02:51.987 --> 00:02:54.551
provide permanent assurance.

37
00:02:54.875 --> 00:02:58.192
Trust the image, policy, and independent
reference.

38
00:02:58.192 --> 00:03:03.871
Also exclude clock, reset, completion, checked,
nontarget logic, and the acceptance mechanism

39
00:03:03.871 --> 00:03:04.979
from disturbance.

40
00:03:04.979 --> 00:03:09.966
The reference retains the original failure rather
than copying the attacked result.

41
00:03:09.966 --> 00:03:13.072
These exclusions isolate a small question.

42
00:03:13.072 --> 00:03:18.337
They do not establish physical immunity or
inaccessibility for those components in a

43
00:03:18.337 --> 00:03:19.272
product.

44
00:03:19.542 --> 00:03:22.905
Case A adds a test XOR on the read path.

45
00:03:22.905 --> 00:03:30.353
Its control inverts the observed value, then
restoring zero reveals original Q again.

46
00:03:30.353 --> 00:03:34.536
Without feedback to D, storage stays unchanged.

47
00:03:34.536 --> 00:03:40.591
A pulse ending after edge three misses the
request at four, which reads zero.

48
00:03:40.591 --> 00:03:45.186
Move that pulse onto a request edge and the
outcome can change.

49
00:03:45.186 --> 00:03:50.926
The original run missed sampling; it did not
exercise an active defense.

50
00:03:51.250 --> 00:03:56.939
Case B selects the normal next state and applies
one XOR before storage.

51
00:03:56.939 --> 00:04:00.324
After edge three, failure zero becomes one.

52
00:04:00.324 --> 00:04:07.551
The injector returns to zero, but the hold path
retains that one, so requests at four and six are

53
00:04:07.551 --> 00:04:08.374
accepted.

54
00:04:08.374 --> 00:04:11.916
One injection caused both accepted requests.

55
00:04:11.916 --> 00:04:18.601
This RTL-style construction specifies a storage
effect; it does not establish physical coupling

56
00:04:18.601 --> 00:04:22.173
of a laser or electromagnetic disturbance to D.

57
00:04:22.500 --> 00:04:25.688
Case C inverts auth okay before storage.

58
00:04:25.688 --> 00:04:32.544
Cover the completion write at edge two and the
wrong answer is captured, surviving the pulse.

59
00:04:32.544 --> 00:04:39.488
A pulse at edge three misses that write: checked
has already closed the enable, so result stays

60
00:04:39.488 --> 00:04:40.366
unchanged.

61
00:04:40.366 --> 00:04:45.713
Inspect verify done, checked, and the actual
write condition together.

62
00:04:45.713 --> 00:04:51.577
C and B use separate traces, without simultaneous
source and storage injection.

63
00:04:51.875 --> 00:04:57.150
In an RTL testbench, stabilize controls before
sampling and distinguish pre-update from

64
00:04:57.150 --> 00:04:58.752
post-update observations.

65
00:04:58.752 --> 00:05:03.961
Changing injection controls with blocking
assignments at the same positive edge can let DUT

66
00:05:03.961 --> 00:05:06.031
and monitor see different ordering.

67
00:05:06.031 --> 00:05:12.290
The Python model does not simulate event-region
races, within-cycle glitches, or metastability.

68
00:05:12.290 --> 00:05:16.337
A simulator harness must address those behaviors
separately.

69
00:05:16.625 --> 00:05:22.914
Force, release, backdoor deposit, and injection
multiplexers name methods, with effects depending

70
00:05:22.914 --> 00:05:26.171
on the simulator, net or variable, and normal
updates.

71
00:05:26.171 --> 00:05:33.020
The fi signals reproduce specified faults; they
provide no protection and should be removed from

72
00:05:33.020 --> 00:05:33.885
production.

73
00:05:33.885 --> 00:05:36.637
Record the target, effect, and recovery.

74
00:05:36.637 --> 00:05:41.942
An API name alone cannot let another engineer
reproduce the same behavior.

75
00:05:42.208 --> 00:05:47.798
In a separate D trace, invert final grant from
zero to one at edge four.

76
00:05:47.798 --> 00:05:53.745
Upstream still correctly records failure, but the
receiver can now accept.

77
00:05:53.745 --> 00:05:58.949
A, B, and C excluded this location, so their
results do not cover it.

78
00:05:58.949 --> 00:06:05.646
D still trusts the handshake and actual
acceptance mechanism, without evaluating every

79
00:06:05.646 --> 00:06:06.738
consumer node.

80
00:06:06.738 --> 00:06:10.362
Adding a target changes the trusted boundary.

81
00:06:10.667 --> 00:06:17.319
Every accepted commit must agree with independent
reference completion and authorization at that

82
00:06:17.319 --> 00:06:18.625
same sampling edge.

83
00:06:18.625 --> 00:06:22.159
A later alert cannot substitute for this
requirement.

84
00:06:22.159 --> 00:06:25.923
Exclude reset and enforce the fault budget in the
harness.

85
00:06:25.923 --> 00:06:31.962
The supplied assertion example can be
incorporated into further verification, but this

86
00:06:31.962 --> 00:06:36.974
animation does not claim a compiled assertion or
completed formal proof.

87
00:06:37.250 --> 00:06:41.646
With an authorized image, fetch acceptance should
be reachable.

88
00:06:41.646 --> 00:06:46.682
A cover can find such a path without guaranteeing
progress on every valid boot.

89
00:06:46.682 --> 00:06:50.192
Specify progress, timeout, and recovery
separately.

90
00:06:50.192 --> 00:06:55.887
Permanently denying fetch might satisfy the
narrow safety property while preventing the

91
00:06:55.887 --> 00:06:57.141
device from working.

92
00:06:57.141 --> 00:07:01.184
Report safety and authorized operation as
distinct outcomes.

93
00:07:01.458 --> 00:07:05.154
Choose six starting edges, two through seven.

94
00:07:05.154 --> 00:07:10.710
A, C, and D test one- or two-edge pulses; B
applies one inversion per start.

95
00:07:10.710 --> 00:07:16.237
That gives forty two fault cases plus two
fault-free controls, each independently reset

96
00:07:16.237 --> 00:07:18.561
with the same failed image and requests.

97
00:07:18.561 --> 00:07:24.098
Python reports eighteen unauthorized traces and
twenty four without acceptance in the window.

98
00:07:24.098 --> 00:07:29.241
PASS reproduces expected behavior, including
deliberate bypasses.

99
00:07:29.241 --> 00:07:34.787
The ratio is not a physical success rate:
probability, disturbance strength, and

100
00:07:34.787 --> 00:07:37.388
reachability were not measured.

101
00:07:37.667 --> 00:07:43.880
If B acts after edge six, the final original
request has already sampled, leaving no later

102
00:07:43.880 --> 00:07:45.644
acceptance opportunity.

103
00:07:45.644 --> 00:07:51.016
Add a request at edge seven and the retained one
is used, permitting acceptance.

104
00:07:51.016 --> 00:07:54.464
The earlier run did not evaluate that
opportunity.

105
00:07:54.464 --> 00:08:00.879
Include the workload in a protection comparison,
or identical stored corruption can produce

106
00:08:00.879 --> 00:08:03.513
apparently conflicting outcomes.

107
00:08:03.833 --> 00:08:09.765
Save design and model versions, target, injection
settings, initialization, requests, deadline, and

108
00:08:09.765 --> 00:08:11.068
counterexample trace.

109
00:08:11.068 --> 00:08:16.083
Check whether injection took effect, whether a
sensitive request arrived, and whether the

110
00:08:16.083 --> 00:08:16.865
property ran.

111
00:08:16.865 --> 00:08:22.429
Keep missing requests, timeouts, failed
injections, and disabled assertions unresolved

112
00:08:22.429 --> 00:08:24.844
instead of counting them as safety passes.

113
00:08:24.844 --> 00:08:29.218
A reproducible campaign preserves these
distinctions in its records.

114
00:08:29.500 --> 00:08:35.880
Before comparing SYNFI, VerFI, or FIRMER, align
targets, effects, event budgets, timing, and

115
00:08:35.880 --> 00:08:37.270
observation points.

116
00:08:37.270 --> 00:08:42.831
Netlist analysis, SAT-based proof, and this
edge-by-edge program may use different

117
00:08:42.831 --> 00:08:43.758
assumptions.

118
00:08:43.758 --> 00:08:47.669
This lesson does not run those tools or reproduce
their benchmarks.

119
00:08:47.669 --> 00:08:52.103
Their numbers cannot be combined into one
protection guarantee without matching the

120
00:08:52.103 --> 00:08:53.500
underlying models.

121
00:08:53.750 --> 00:08:59.826
A product may expose prefetch, DMA, debug, or key
reads, each with a sensitive handoff.

122
00:08:59.826 --> 00:09:06.186
Match RTL targets to the netlist and calibrate
effects against physical tests, checking that

123
00:09:06.186 --> 00:09:08.359
blocking precedes acceptance.

124
00:09:08.359 --> 00:09:14.270
Clock and reset faults, multiple bits, repeated
injection, and information leakage need

125
00:09:14.270 --> 00:09:15.502
additional models.

126
00:09:15.502 --> 00:09:20.058
This single-attempt result over a finite window
does not cover them.

127
00:09:20.333 --> 00:09:23.468
Put the B upset after edge six on a model card.

128
00:09:23.468 --> 00:09:26.640
Run the original requests, then add edge seven.

129
00:09:26.640 --> 00:09:33.064
Specify the target, effect, budget, trusted
components, and deadline, reporting acceptance,

130
00:09:33.064 --> 00:09:36.077
detection, and timely blocking separately.

131
00:09:36.077 --> 00:09:41.625
A colleague can then distinguish a workload
change from protection taking effect.

132
00:09:41.625 --> 00:09:47.564
Use the same acceptance event and experimental
discipline when comparing storage codes.
