WEBVTT

00:00:01.320 --> 00:00:03.020
You know, when you think about the computers

00:00:03.020 --> 00:00:05.179
running our world, you probably picture like

00:00:05.179 --> 00:00:08.339
absolute precision, right? Ones and zeros. Every

00:00:08.339 --> 00:00:11.740
single detail, meticulously calculated, mapped

00:00:11.740 --> 00:00:14.990
out, and accounted for. Right. Yeah. It definitely

00:00:14.990 --> 00:00:17.850
feels comforting to assume that underneath the

00:00:17.850 --> 00:00:20.690
glass screens of our devices, there's this rigid

00:00:20.690 --> 00:00:23.989
binary foundation, a place where nothing is left

00:00:23.989 --> 00:00:26.410
to chance, you know, a perfectly ordered digital

00:00:26.410 --> 00:00:28.370
universe. Yeah, exactly. But then you actually

00:00:28.370 --> 00:00:30.510
peek under the hood of digital logic design and

00:00:30.510 --> 00:00:32.810
suddenly that perfection starts to look a lot

00:00:32.810 --> 00:00:35.829
more like, well, selective blindness. Selective

00:00:35.829 --> 00:00:38.109
blindness. I like that. Right. Because they were

00:00:38.109 --> 00:00:40.810
intentionally ignoring information just to save

00:00:40.810 --> 00:00:44.140
power and space. And the craziest part? that

00:00:44.140 --> 00:00:47.179
intentional ignorance is exactly what makes our

00:00:47.179 --> 00:00:49.920
most advanced machines vulnerable to chaotic

00:00:49.920 --> 00:00:52.140
real -world phenomena. Oh, absolutely. Things

00:00:52.140 --> 00:00:55.179
like cosmic rays. Literally cosmic rays. So welcome

00:00:55.179 --> 00:00:57.520
to the Deep Dive. Today we're exploring a dense,

00:00:57.780 --> 00:00:59.880
highly technical concept in digital logic called

00:00:59.880 --> 00:01:02.600
the Don't Care Term. It's a fundamental tension

00:01:02.600 --> 00:01:05.659
in computer science really. Engineers are constantly

00:01:05.659 --> 00:01:10.340
battling between elegant, optimized theory and

00:01:10.340 --> 00:01:13.519
the messy, unpredictable physical reality we

00:01:13.519 --> 00:01:15.840
actually live in. And that's our mission today.

00:01:16.359 --> 00:01:18.459
We are going to break down how digital systems

00:01:18.459 --> 00:01:21.519
rely on these blind spots to run faster and cheaper.

00:01:21.689 --> 00:01:24.090
Because whether you are a programmer or just,

00:01:24.090 --> 00:01:25.930
you know, someone reading this on a digital screen,

00:01:26.670 --> 00:01:29.409
your devices are actively making don't care decisions

00:01:29.409 --> 00:01:31.409
right now to save power. They absolutely are.

00:01:31.430 --> 00:01:33.450
It's happening constantly. But we're also going

00:01:33.450 --> 00:01:36.590
to look at what happens when the physical universe

00:01:36.590 --> 00:01:40.090
forces those systems to care and to guide you

00:01:40.090 --> 00:01:41.950
through this kind of counterintuitive logic.

00:01:42.329 --> 00:01:44.909
I've got our expert here. Thanks, yeah. To really

00:01:44.909 --> 00:01:47.010
grasp how these systems break down, we first

00:01:47.010 --> 00:01:48.750
have to look at how they're built to ignore things

00:01:48.750 --> 00:01:51.170
in the first place. Right. So at the very bottom

00:01:51.170 --> 00:01:53.650
of computing, you have Boolean functions. That's

00:01:53.650 --> 00:01:55.950
the underlying math of ones and zeros that makes

00:01:55.950 --> 00:01:58.969
logic gates work. And within that math, engineers

00:01:58.969 --> 00:02:01.530
use two distinct concepts. OK, what's the first

00:02:01.530 --> 00:02:05.390
one? First is the don't care term. This is simply

00:02:05.390 --> 00:02:07.790
an input sequence where the designer decides

00:02:07.790 --> 00:02:11.870
the output of the function. Just doesn't matter.

00:02:12.050 --> 00:02:14.370
It's just a giant shrug from the system. Pretty

00:02:14.370 --> 00:02:17.349
much. And its sibling concept is the can't happen

00:02:17.349 --> 00:02:20.150
term. This is an input that the system assumes

00:02:20.150 --> 00:02:22.770
will literally never occur in the real world.

00:02:23.030 --> 00:02:25.150
Never ever. Right. And when you dig into the

00:02:25.150 --> 00:02:28.669
engineering history, you see decades of logic

00:02:28.669 --> 00:02:31.490
designers wrestling with what to even call these

00:02:31.490 --> 00:02:34.050
informational voids. Because don't care is pretty

00:02:34.050 --> 00:02:37.449
informal. Right, exactly. So you'll see historical

00:02:37.449 --> 00:02:40.810
aliases like redundancies, irrelevancies, vacuous

00:02:40.810 --> 00:02:43.270
combinations, and my personal favorite, forbidden

00:02:43.270 --> 00:02:45.870
combinations. Forbidden combinations. That sounds

00:02:45.870 --> 00:02:47.849
like something out of an alchemy textbook, not,

00:02:47.849 --> 00:02:50.150
you know, computer engineering. It really does.

00:02:50.430 --> 00:02:53.569
OK, let's unpack this. Why would a designer whose

00:02:53.569 --> 00:02:56.569
entire job is to build a precise, predictable

00:02:56.569 --> 00:03:00.419
machine purposely introduce irrelevancies. Is

00:03:00.419 --> 00:03:01.840
this like building a house with a blueprint,

00:03:02.120 --> 00:03:04.020
but since you know nobody will ever walk on the

00:03:04.020 --> 00:03:06.139
ceiling, you don't care about putting carpet

00:03:06.139 --> 00:03:08.039
up there. That's a great way to think about it.

00:03:08.159 --> 00:03:10.680
So by ignoring the ceiling, you just save money

00:03:10.680 --> 00:03:13.319
and time on the overall build. Yes, exactly.

00:03:13.900 --> 00:03:16.439
Just like the ceiling, leaving it undefined is

00:03:16.439 --> 00:03:18.860
an intentional design choice to optimize the

00:03:18.860 --> 00:03:21.780
whole structure. In logic design, it's all about

00:03:21.780 --> 00:03:24.620
minimization. Minimization, meaning making things

00:03:24.620 --> 00:03:27.360
smaller. Making them smaller, simpler, faster.

00:03:27.800 --> 00:03:30.419
Every single logic gate you add to a circuit

00:03:30.419 --> 00:03:33.780
requires physical space on a silicon chip. It

00:03:33.780 --> 00:03:37.060
requires manufacturing materials. And crucially,

00:03:37.300 --> 00:03:39.699
it requires electricity to run, which generates

00:03:39.699 --> 00:03:42.419
heat. Right. And heat is the enemy of electronics.

00:03:42.659 --> 00:03:45.280
Exactly. So by treating certain complex conditions

00:03:45.280 --> 00:03:48.300
as don't cares, the designer doesn't have to

00:03:48.300 --> 00:03:50.819
wire a specific physical path for them. They

00:03:50.819 --> 00:03:52.719
just leave it blank. Well, they do better than

00:03:52.719 --> 00:03:54.780
leave it blank. They strategically assign it

00:03:54.780 --> 00:03:57.360
at one or zero based on whatever makes the rest

00:03:57.360 --> 00:03:59.639
of the circuit simpler. Wait, how do they decide

00:03:59.639 --> 00:04:02.849
that? Engineers use graphical methods like Karnavatch

00:04:02.849 --> 00:04:05.530
maps to do this, or even algebraic methods like

00:04:05.530 --> 00:04:07.629
the Quine -McCluskey algorithm. Let's stick to

00:04:07.629 --> 00:04:11.330
the visual one. The map. Sure. Imagine a grid

00:04:11.330 --> 00:04:14.409
on a piece of paper filled with ones and zeros

00:04:14.409 --> 00:04:16.629
representing the desired outputs of a circuit.

00:04:17.000 --> 00:04:19.959
To minimize the physical gates, engineers look

00:04:19.959 --> 00:04:22.079
for groups of ones they can circle together.

00:04:22.240 --> 00:04:24.199
Like finding a word in a word search puzzle.

00:04:24.360 --> 00:04:26.759
Right. And the larger the circle they can draw,

00:04:26.899 --> 00:04:29.319
the simpler the resulting algebraic equation

00:04:29.319 --> 00:04:34.000
becomes, which means fewer physical wires. Now,

00:04:34.480 --> 00:04:36.920
if you have a can't happen state, a square on

00:04:36.920 --> 00:04:38.980
that grid that you know will never be triggered,

00:04:39.420 --> 00:04:42.319
you can drop a don't care wild card into that

00:04:42.319 --> 00:04:44.100
square. Just pretend it's whatever you need it

00:04:44.100 --> 00:04:46.500
to be. Exactly. If treating that wild card as

00:04:46.439 --> 00:04:49.100
So one allows you to draw a massive circle connecting

00:04:49.100 --> 00:04:51.860
other real ones. You do it. You've just mathematically

00:04:51.860 --> 00:04:54.939
squeezed the waste out of the design. Wow. OK,

00:04:55.060 --> 00:04:57.180
but hasn't this always been the goal? It has.

00:04:57.420 --> 00:04:59.819
But translating that theory into physical reality

00:04:59.819 --> 00:05:02.899
took time. Back in 1958, a mathematician named

00:05:02.899 --> 00:05:05.439
Seymour Ginsburg actually proved something really

00:05:05.439 --> 00:05:07.199
frustrating for engineers. What did he prove?

00:05:07.389 --> 00:05:10.230
He proved that minimizing the states of a machine

00:05:10.230 --> 00:05:12.730
using these don't care conditions didn't necessarily

00:05:12.730 --> 00:05:15.129
guarantee you were minimizing the actual physical

00:05:15.129 --> 00:05:18.310
logic elements on the board. Wait, why not? If

00:05:18.310 --> 00:05:20.670
you simplify the math, shouldn't the physical

00:05:20.670 --> 00:05:23.600
machine automatically be simpler? Not necessarily.

00:05:23.959 --> 00:05:26.220
Ginsburg showed that sometimes combining states

00:05:26.220 --> 00:05:28.779
mathematically forces you to use more complex

00:05:28.779 --> 00:05:31.699
physical wiring to write the signals between

00:05:31.699 --> 00:05:35.180
those newly combined states. Oh, so the abstract

00:05:35.180 --> 00:05:37.920
math doesn't perfectly match the physical silicon.

00:05:38.000 --> 00:05:41.720
Right. And the real problem was, in 1958, they

00:05:41.720 --> 00:05:44.379
didn't have the computational power to test the

00:05:44.379 --> 00:05:46.899
millions of combinations required to perfectly

00:05:46.899 --> 00:05:49.899
align the abstract state minimization with the

00:05:49.899 --> 00:05:52.490
physical logic minimization. computationally

00:05:52.490 --> 00:05:54.649
impractical for large systems at the time. Exactly.

00:05:54.930 --> 00:05:57.149
They were mapping out the philosophy of intentional

00:05:57.149 --> 00:05:59.490
ignorance long before they had the supercomputers

00:05:59.490 --> 00:06:02.029
needed to fully exploit it. So to see how this

00:06:02.029 --> 00:06:04.370
works in the real world today, let's look at

00:06:04.370 --> 00:06:07.009
how computers handle basic human numbers. We

00:06:07.009 --> 00:06:10.069
operate on a base -10 system, right? Zero through

00:06:10.069 --> 00:06:13.050
nine. But computers operate in binary ones and

00:06:13.050 --> 00:06:15.949
zeros. So engineers use something called binary

00:06:15.949 --> 00:06:19.509
coded decimal or BCD to bridge the gap. And that

00:06:19.509 --> 00:06:22.269
translation creates a fascinating mathematical

00:06:22.269 --> 00:06:25.189
leftover. How so? Well, to represent the human

00:06:25.189 --> 00:06:29.029
number 9, a computer needs a 4 -bit binary sequence,

00:06:29.509 --> 00:06:33.410
specifically 1001. But a 4 -bit sequence can

00:06:33.410 --> 00:06:36.769
actually hold up to 16 different values, from

00:06:36.769 --> 00:06:40.129
0 all the way up to 15. Which means, if you are

00:06:40.129 --> 00:06:43.079
only ever counting from 0 to 9, Those binary

00:06:43.079 --> 00:06:47.220
values for 10, 11, 12, 13, 14, and 15 will absolutely

00:06:47.220 --> 00:06:49.379
never be used. Right. This system assumes they

00:06:49.379 --> 00:06:52.120
are impossible. And there's a specific engineering

00:06:52.120 --> 00:06:55.019
term for these leftover impossible inputs, right?

00:06:55.699 --> 00:06:58.360
Pseudotetraids. Yes, pseudotetraids. The term

00:06:58.360 --> 00:07:00.360
itself highlights their phantom nature. They

00:07:00.360 --> 00:07:02.800
were valid binary combinations that simply have

00:07:02.800 --> 00:07:05.319
no meaning in a decimal context. And designers

00:07:05.319 --> 00:07:07.879
exploit these pseudotetraids aggressively to

00:07:07.879 --> 00:07:10.000
save money. I think the classic example of this

00:07:10.000 --> 00:07:11.959
is the seven segment display. Oh, that's a perfect

00:07:11.959 --> 00:07:14.939
example. Yeah, think of the blocky red digital

00:07:14.939 --> 00:07:17.939
numbers on a bedside alarm clock or like a microwave.

00:07:18.459 --> 00:07:20.980
Each number is made of up to seven little LED

00:07:20.980 --> 00:07:24.600
bars. The logic circuit behind that display has

00:07:24.600 --> 00:07:27.319
to constantly compute when to turn on say the

00:07:27.319 --> 00:07:29.560
lower left bar. And this is where the minimization

00:07:29.560 --> 00:07:31.600
we talked about earlier physically manifests.

00:07:32.040 --> 00:07:34.839
To definitively tell that lower left bar what

00:07:34.839 --> 00:07:37.629
to do, the circuit normally has to check all

00:07:37.629 --> 00:07:40.230
four binary wires. Like it has to ask, are you

00:07:40.230 --> 00:07:43.149
a zero? Are you a one? Are you an eight? Exactly.

00:07:43.370 --> 00:07:45.649
But the designer knows the inputs for 10 through

00:07:45.649 --> 00:07:48.449
15 will never happen. So they just don't bother

00:07:48.449 --> 00:07:50.930
building the complex web of logic gates required

00:07:50.930 --> 00:07:52.949
to check for those higher numbers. They just

00:07:52.949 --> 00:07:55.329
drop those don't care wild cards onto their Karnaugh

00:07:55.329 --> 00:07:57.949
map. Yes. They make an arbitrary mathematical

00:07:57.949 --> 00:08:00.430
choice for those pseudo tetraids, allowing them

00:08:00.430 --> 00:08:03.589
to strip the circuit down to a bare bones algebraic

00:08:03.589 --> 00:08:05.529
equation. And what does that equation look like?

00:08:05.649 --> 00:08:07.870
In the case of that lower or left bar, they reduce

00:08:07.870 --> 00:08:10.569
the logic to simply checking two specific conditions,

00:08:10.750 --> 00:08:13.970
usually written algebraically as A0B plus A0C.

00:08:14.329 --> 00:08:16.689
They bypass checking the other wires entirely.

00:08:17.089 --> 00:08:19.870
Wow. So that physically shrinks the microchip.

00:08:20.149 --> 00:08:22.750
Significantly. They are literally erasing physical

00:08:22.750 --> 00:08:25.149
wires from the manufacturing process just by

00:08:25.149 --> 00:08:27.290
letting the math bleed over into the impossible

00:08:27.290 --> 00:08:30.329
numbers. Exactly. And this isn't just for alarm

00:08:30.329 --> 00:08:33.529
clocks. This exact same shortcut is used in complex

00:08:33.529 --> 00:08:36.279
encoding schemes, too. Right, the source mentioned

00:08:36.279 --> 00:08:40.039
schemes with names like Hertz, Chen Ho, and densely

00:08:40.039 --> 00:08:42.679
packed decimal. Yes, all of them rely on this.

00:08:43.080 --> 00:08:45.679
It also shows up in OLDL hardware with things

00:08:45.679 --> 00:08:48.080
called write -only registers. Oh yeah, the write

00:08:48.080 --> 00:08:50.460
-only registers. That was a direct consequence

00:08:50.460 --> 00:08:53.580
of engineers trading off functionality just to

00:08:53.580 --> 00:08:56.259
reduce the number of logic gates. But that brings

00:08:56.259 --> 00:08:58.759
up a really specific mechanical question that

00:08:58.759 --> 00:09:00.799
I had when reading the source. OK, what is it?

00:09:01.059 --> 00:09:03.940
If you have a write -only register, and you attempt

00:09:03.940 --> 00:09:07.139
to read it, the source says a don't care is read.

00:09:07.860 --> 00:09:09.980
How does a computer actually read a don't care?

00:09:10.539 --> 00:09:12.820
Does it just spit out garbage data to the user

00:09:12.820 --> 00:09:15.490
because it traded functionality for Fewer gates?

00:09:15.730 --> 00:09:18.269
What's fascinating here is that the system literally

00:09:18.269 --> 00:09:20.970
shrugs. It shrugs. Yeah, it provides whatever

00:09:20.970 --> 00:09:23.970
arbitrary output was cheapest to wire because

00:09:23.970 --> 00:09:25.789
you were never supposed to ask it that question.

00:09:26.049 --> 00:09:28.070
You were asking for data from a pathway that

00:09:28.070 --> 00:09:31.490
was intentionally left blank to save a microsenon

00:09:31.490 --> 00:09:34.029
manufacturing. So the physical circuitry just

00:09:34.029 --> 00:09:36.450
like gives you whatever residual electricity

00:09:36.450 --> 00:09:39.370
happens to be there. Basically, yes. OK. But

00:09:39.370 --> 00:09:42.389
before a single wire is ever soldered or a chip

00:09:42.389 --> 00:09:45.179
is printed, engineers have to test this stuff

00:09:45.179 --> 00:09:48.500
on computers. How do they simulate a void of

00:09:48.500 --> 00:09:51.100
information before the hardware is even built?

00:09:51.580 --> 00:09:54.539
Well, in the realm of multi -valued logic systems,

00:09:54.840 --> 00:09:58.529
they introduce the x -value. The x -value. Which

00:09:58.529 --> 00:10:00.889
stands for don't know. Exactly. When engineers

00:10:00.889 --> 00:10:03.029
write the code that will eventually be synthesized

00:10:03.029 --> 00:10:05.490
into physical hardware, they use hardware description

00:10:05.490 --> 00:10:08.090
languages. In Verilog, for example, these unknown

00:10:08.090 --> 00:10:10.669
values are just denoted by the letter X. And

00:10:10.669 --> 00:10:13.509
in another language called VHDL, things get even

00:10:13.509 --> 00:10:16.669
more specific. They use X to mean a forced unknown,

00:10:16.889 --> 00:10:19.629
but they also use the letter W key to represent

00:10:19.629 --> 00:10:22.490
a weak unknown. That distinction is really important

00:10:22.490 --> 00:10:25.769
for simulating real world physics. How so? Well,

00:10:26.070 --> 00:10:29.440
a forced unknown The X happens in a simulation

00:10:29.440 --> 00:10:32.120
if two sources are driving a signal simultaneously,

00:10:32.299 --> 00:10:33.960
like they're basically fighting each other to

00:10:33.960 --> 00:10:37.279
a draw. OK. And the weak unknown? A weak unknown,

00:10:37.480 --> 00:10:40.659
the W -YO, is an undefined signal that isn't

00:10:40.659 --> 00:10:43.500
being actively pushed by a strong power source,

00:10:43.779 --> 00:10:46.500
so it can easily be overridden if a valid zero

00:10:46.500 --> 00:10:49.120
or one comes along. It's the software saying,

00:10:49.480 --> 00:10:53.279
I am confused. This pathway is currently undefined.

00:10:54.279 --> 00:10:56.500
This can also happen if a tiny component called

00:10:56.500 --> 00:10:59.240
a flip -flop hasn't reached a stable output yet,

00:10:59.240 --> 00:11:01.419
right? Right. A flip -flop holds state. It's

00:11:01.419 --> 00:11:03.759
the fundamental building block of computer memory.

00:11:04.139 --> 00:11:06.299
Think of it like a tiny seesaw. It holds a one

00:11:06.299 --> 00:11:08.259
when it's tilted up and a zero when it's down.

00:11:08.460 --> 00:11:10.919
Okay, I'm picturing it. But during a transition,

00:11:11.179 --> 00:11:13.000
that seesaw can balance perfectly in the middle

00:11:13.000 --> 00:11:15.480
for a fraction of a microsecond. In the pure

00:11:15.480 --> 00:11:17.799
math of a simulation software, the program can

00:11:17.799 --> 00:11:19.960
look at that perfectly balanced seesaw and just

00:11:19.960 --> 00:11:22.460
ladle it X. It can just sit there unresolved.

00:11:22.740 --> 00:11:24.679
Here's where it gets really interesting. So in

00:11:24.679 --> 00:11:27.360
the simulation software, X is a literal placeholder

00:11:27.360 --> 00:11:30.700
for confused. But in the real world, the physical

00:11:30.700 --> 00:11:34.720
wire has to hold a voltage. It is forced to pick

00:11:34.720 --> 00:11:38.500
aside a 0 or a 1. Even if it's completely blind

00:11:38.500 --> 00:11:41.059
to what it should be, it can't just hover in

00:11:41.059 --> 00:11:43.539
an X state in physical hardware. This raises

00:11:43.539 --> 00:11:46.059
an important question about the danger of assumptions.

00:11:46.860 --> 00:11:50.059
When a simulation allows an X, a nice, safe,

00:11:50.399 --> 00:11:53.480
undefined placeholder, but reality demands a

00:11:53.480 --> 00:11:57.840
definitive 1 or 0, a dangerous gap opens up between

00:11:57.840 --> 00:12:01.399
theory and physical execution. because the synthesized

00:12:01.399 --> 00:12:04.940
physical hardware's actual value is indeterminable

00:12:04.940 --> 00:12:07.500
from the inputs. Exactly. Which brings us to

00:12:07.500 --> 00:12:10.240
the chaos of the physical universe. Since the

00:12:10.240 --> 00:12:13.220
physical hardware must pick a 1 or a 0, what

00:12:13.220 --> 00:12:15.320
actually happens when the real world forces the

00:12:15.320 --> 00:12:17.539
system into one of those can't happen combinations?

00:12:18.200 --> 00:12:20.399
The forbidden inputs the engineers assumed could

00:12:20.399 --> 00:12:22.639
never happen. Things get truly precarious when

00:12:22.639 --> 00:12:24.259
we look at circuits with feedback. These are

00:12:24.259 --> 00:12:26.580
known as state machines. State machines. Right.

00:12:26.759 --> 00:12:29.220
A state machine depends heavily on its own previous

00:12:29.220 --> 00:12:32.179
outputs and external inputs. It has a memory

00:12:32.179 --> 00:12:34.500
of the state it is currently in. It's like a

00:12:34.500 --> 00:12:36.399
combination lock that remembers the last number

00:12:36.399 --> 00:12:39.379
you spun to. Great analogy. And the environment

00:12:39.379 --> 00:12:43.299
is constantly threatening that memory. The real

00:12:43.299 --> 00:12:45.600
world can accidentally generate these forbidden

00:12:45.600 --> 00:12:48.629
inputs. Like what kind of threats it could be

00:12:48.629 --> 00:12:50.850
a voltage glitch during the circuits power -up

00:12:50.850 --> 00:12:54.190
phase or Random interference from a heat spike.

00:12:54.529 --> 00:12:57.190
It could be electrical noise or incredibly. It

00:12:57.190 --> 00:13:00.590
can be cosmic radiation Wait cosmic radiation.

00:13:00.870 --> 00:13:03.669
So an engineer perfectly designs a state machine

00:13:03.669 --> 00:13:06.370
mathematically proves an input will never occur

00:13:06.370 --> 00:13:10.029
and Then literally a particle from outer space

00:13:10.029 --> 00:13:12.799
hits the computer and throws it into a forbidden

00:13:12.799 --> 00:13:15.019
state. I know it sounds like sci -fi, but yes.

00:13:15.120 --> 00:13:17.039
It's like building an impenetrable bank vault,

00:13:17.360 --> 00:13:19.159
and then a meteor teleports inside of it. That

00:13:19.159 --> 00:13:21.519
is exactly what it's like, and that's why nominally

00:13:21.519 --> 00:13:24.200
can't -happen states are actually deeply dangerous,

00:13:24.519 --> 00:13:27.059
because cosmic rays are high -energy particles

00:13:27.059 --> 00:13:29.100
constantly raining down on Earth. And if one

00:13:29.100 --> 00:13:31.679
hits the chip perfectly... It can inject a microscopic

00:13:31.679 --> 00:13:34.679
charge. It physically flips a single bit from

00:13:34.679 --> 00:13:37.500
a zero to a one. Which means the machine is suddenly

00:13:37.500 --> 00:13:39.980
experiencing an input that the designer guaranteed

00:13:39.980 --> 00:13:43.600
was impossible. Right. Suddenly, your combination

00:13:43.600 --> 00:13:45.980
lock thinks it is set to a number that isn't

00:13:45.980 --> 00:13:48.799
even painted on the dial. And because the logic

00:13:48.799 --> 00:13:51.320
was minimized to save space, there's no pathway

00:13:51.320 --> 00:13:53.379
instructing the lock on what to do. The results

00:13:53.379 --> 00:13:55.080
of this are catastrophic, right? Completely.

00:13:55.360 --> 00:13:57.600
In computer engineering, this is called a hardware

00:13:57.600 --> 00:14:00.919
lockup or a soft error. Your device essentially

00:14:00.919 --> 00:14:04.009
freezes into a coma. Because it enters what the

00:14:04.009 --> 00:14:06.529
source called the walled garden of states. The

00:14:06.529 --> 00:14:08.929
walled garden. Which usually sounds pleasant,

00:14:09.169 --> 00:14:11.929
but here it is a scenario where the machine is

00:14:11.929 --> 00:14:15.669
stuck between can't happen states with absolutely

00:14:15.669 --> 00:14:18.590
no combination of inputs that can exit it back

00:14:18.590 --> 00:14:21.330
into normal operation. Because they used don't

00:14:21.330 --> 00:14:23.649
care logic to minimize the circuitry, they didn't

00:14:23.649 --> 00:14:26.320
build an exit. The cosmic ray pushes the machine

00:14:26.320 --> 00:14:28.840
into the walled garden and it is entirely trapped.

00:14:29.000 --> 00:14:30.980
Just bouncing around inside the forbidden logic

00:14:30.980 --> 00:14:33.679
loop forever? Exactly. Entirely unresponsive.

00:14:33.860 --> 00:14:36.860
So if a random burst of heat or cosmic radiation

00:14:36.860 --> 00:14:39.299
can permanently trap our technology in a walled

00:14:39.299 --> 00:14:41.940
garden, how do engineers prevent our devices

00:14:41.940 --> 00:14:44.500
from instantly becoming expensive paperweights?

00:14:44.840 --> 00:14:47.440
Well, they have to design safety nets. There

00:14:47.440 --> 00:14:50.019
are three main mitigation strategies designers

00:14:50.019 --> 00:14:52.580
must employ for state machines. What's option

00:14:52.580 --> 00:14:55.320
one? Option one is the brute force approach.

00:14:55.899 --> 00:14:58.960
They must take extra physical steps to ensure

00:14:58.960 --> 00:15:02.559
the forbidden combinations are truly made. Can't

00:15:02.559 --> 00:15:05.480
happen. But doesn't that mean heavily shielding

00:15:05.480 --> 00:15:08.019
the system? Wouldn't that completely ruin the

00:15:08.019 --> 00:15:10.820
whole point of minimizing the circuit to save

00:15:10.820 --> 00:15:13.840
money and space? It absolutely does. It's a massive

00:15:13.840 --> 00:15:16.379
trade off, usually reserved for things like aerospace

00:15:16.379 --> 00:15:19.039
or medical devices. Where failure is just not

00:15:19.039 --> 00:15:21.559
an option. Right. So for everyday electronics,

00:15:21.860 --> 00:15:24.620
option two is more common, making them transitory.

00:15:25.059 --> 00:15:27.659
How does a transitory state work? The designer

00:15:27.659 --> 00:15:30.879
explicitly wires the walled garden so that it

00:15:30.879 --> 00:15:33.779
has a trap door. If the machine enters a forbidden

00:15:33.779 --> 00:15:36.620
state, the very next tick of the clock will automatically

00:15:36.620 --> 00:15:39.059
lead it back to a normal operational state. OK,

00:15:39.059 --> 00:15:41.320
so it auto -fleshes the system. Exactly. The

00:15:41.320 --> 00:15:43.539
user might experience a tiny glitch, but it won't

00:15:43.539 --> 00:15:46.519
permanently lock up. That makes sense. But then

00:15:46.519 --> 00:15:49.240
there is option three, which is creating a don't

00:15:49.240 --> 00:15:52.120
care alarm to indicate an emergency state for

00:15:52.120 --> 00:15:55.100
air detection. Yes, the don't care alarm. And

00:15:55.100 --> 00:15:57.019
I have to call out this phrase from the source,

00:15:57.220 --> 00:16:01.139
a don't care alarm. Isn't that the ultimate oxymoron?

00:16:01.519 --> 00:16:04.240
How do you mean? Well, if you are taking the

00:16:04.240 --> 00:16:07.899
time to design a specific emergency protocol

00:16:07.899 --> 00:16:11.419
and an alarm for it, you explicitly do care.

00:16:11.679 --> 00:16:14.659
If we connect this to the bigger picture. That

00:16:14.659 --> 00:16:17.700
is the beautiful irony of digital design. Engineers

00:16:17.700 --> 00:16:20.379
start out using don't cares to save time, space,

00:16:20.500 --> 00:16:22.740
and money. They want to strip the system down

00:16:22.740 --> 00:16:25.679
to its absolute most efficient form. Right. But

00:16:25.679 --> 00:16:28.120
because the physical world is inherently chaotic,

00:16:28.539 --> 00:16:30.120
they eventually have to spend time and money

00:16:30.120 --> 00:16:32.139
building alarms just to protect the system from

00:16:32.139 --> 00:16:34.919
its own optimized ignorance. Wow. They optimize

00:16:34.919 --> 00:16:36.940
themselves into a corner and then have to build

00:16:36.940 --> 00:16:39.419
a fire alarm inside that corner. That's the reality

00:16:39.419 --> 00:16:41.659
of bridging abstract math with physical hardware.

00:16:41.879 --> 00:16:44.700
It really reframes how you look at the devices

00:16:44.700 --> 00:16:46.799
around us. We started this deep dive looking

00:16:46.799 --> 00:16:48.980
at an obscure trick that don't care term. We

00:16:48.980 --> 00:16:51.720
saw how things like Karnaugh maps allow for brilliant,

00:16:52.440 --> 00:16:54.519
elegant minimization. Like stripping down the

00:16:54.519 --> 00:16:58.460
seventh segment displays. Exactly. But we also

00:16:58.460 --> 00:17:00.620
saw that the physical universe doesn't respect

00:17:00.620 --> 00:17:03.360
our mathematical boundaries. The physical realities

00:17:03.360 --> 00:17:07.539
of X values heat and cosmic radiation force engineers

00:17:07.539 --> 00:17:10.720
to build safety nets like don't care alarms to

00:17:10.720 --> 00:17:13.539
prevent permanent hardware lockups. It's a constant

00:17:13.539 --> 00:17:16.460
invisible negotiation happening millions of times

00:17:16.460 --> 00:17:18.420
a second inside your phone. Which leaves you

00:17:18.420 --> 00:17:20.579
with something to chew on. We build our most

00:17:20.579 --> 00:17:23.200
advanced systems to efficiently ignore the impossible.

00:17:23.819 --> 00:17:26.059
But since the physical universe guarantees that

00:17:26.059 --> 00:17:28.480
the impossible like a random cosmic ray will

00:17:28.480 --> 00:17:31.160
eventually happen, our most optimized digital

00:17:31.160 --> 00:17:34.000
systems inherently are most fragile. It's a great

00:17:34.000 --> 00:17:35.640
question. Think about that the next time your

00:17:35.640 --> 00:17:38.420
screen freezes for no apparent reason. Thank

00:17:38.420 --> 00:17:40.359
you for joining us on this deep dive and keep

00:17:40.359 --> 00:17:41.500
asking the big questions.
