WEBVTT
00:00:00.000 --> 00:00:18.406
36C3 Intro musik
00:00:18.406 --> 00:00:22.640
Herald: The next talk will be titled 'How
to Design Highly Reliable Digital
00:00:22.640 --> 00:00:26.472
Electronics', and it will be delivered to
you by Szymon and Stefan. Warm Applause
00:00:26.472 --> 00:00:30.199
for them.
00:00:30.199 --> 00:00:36.360
applause
00:00:36.360 --> 00:00:41.360
Stefan: All right. Good morning, Congress.
So perhaps every one of you in the room
00:00:41.360 --> 00:00:45.600
here has at one point or another in their
lives witnessed their computer behaving
00:00:45.600 --> 00:00:50.320
weirdly and doing things that it was not
supposed to do or what you didn't
00:00:50.320 --> 00:00:54.400
anticipate it to do. And well, typically
that would have probably been the result
00:00:54.400 --> 00:01:00.000
of a software bug of some sort somewhere
inside the huge software stack your PC is
00:01:00.000 --> 00:01:04.720
running on. Have you ever considered what
the probability of this weird behavior
00:01:04.720 --> 00:01:09.120
being caused by a bit flipped somewhere in
your memory of your computer might have
00:01:09.120 --> 00:01:16.240
been? So what you can see in this video on
the screen now is a physics experiment
00:01:16.240 --> 00:01:20.720
called a cloud chamber. It's a very simple
experiment that is actually able to
00:01:20.720 --> 00:01:26.560
visualize and make apparent all the
constant stream of background radiation we
00:01:26.560 --> 00:01:32.640
all are constantly exposed to. So what's
happening here is that highly energetic
00:01:32.640 --> 00:01:39.040
particles, for example, from space they
trace through gaseous alcohol and they
00:01:39.040 --> 00:01:42.160
collide with alcohol molecules and they
form in this process a trail of
00:01:42.160 --> 00:01:48.240
condensation while they do that. And if
you think about your computer, a typical
00:01:48.240 --> 00:01:53.200
cell of RAM, of which you might have, I
don't know, 4, 8, 10 gigabytes in your
00:01:53.200 --> 00:01:58.400
machine is as big as only 80 nanometers
wide. So it's very, very tiny. And you
00:01:58.400 --> 00:02:02.560
probably are able to appreciate the small
amount of energy that is needed or that is
00:02:02.560 --> 00:02:08.480
used to store the information inside each
of those bits. And the sheer amount of of
00:02:08.480 --> 00:02:12.560
those bits you have in your RAM and your
computer. So a couple of years ago, there
00:02:12.560 --> 00:02:17.600
was a study that concluded that in a
computer with about four gigabytes of RAM,
00:02:17.600 --> 00:02:23.600
a bit flip, um, caused by such an event by
cosmic background radiation can occur
00:02:23.600 --> 00:02:29.200
about once every 33 hours. So a
bit less than than one per day. In an
00:02:29.200 --> 00:02:34.960
incident in 2008, a Quantas Airlines
flight actually nearly crashed, and the
00:02:34.960 --> 00:02:40.080
reason for this crash was traced back to
be very likely caused by a bit flipped
00:02:40.080 --> 00:02:44.400
somewhere in one of the CPUs of the
avionics system and nearly caused the
00:02:44.400 --> 00:02:50.480
death of a lot of passengers on this
plane. In 2003, in Belgium, a small
00:02:50.480 --> 00:02:56.880
municipal vote actually had a weird hiccup
in which one of the candidates in this
00:02:56.880 --> 00:03:02.153
election actually got 4096 more votes added in a single instance.
00:03:02.153 --> 00:03:06.480
And that was traced back to be very likely
caused by cosmic background radiation,
00:03:06.480 --> 00:03:10.000
flipping a memory cell somewhere that
stored the vote count. And it was only
00:03:10.000 --> 00:03:14.560
discovered that this happened because this
number of votes for this particular
00:03:14.560 --> 00:03:18.880
candidate was considered unreasonable, but
otherwise would have gotten away probably
00:03:18.880 --> 00:03:27.360
without being detected. So a few words
about us: Szymon and I, we both work at
00:03:27.360 --> 00:03:32.480
CERN in the microelectronics section and
we both develop electronics that need to
00:03:32.480 --> 00:03:37.360
be tolerant to these sorts of effects. So
we develop radiation tolerant electronics
00:03:37.360 --> 00:03:42.846
for the experiments at CERN, at the LHC.
Among a lot of other applications, you can
00:03:42.846 --> 00:03:48.330
meet the two of us at the Lötlabor Jena
assembly if you are interested in what we
00:03:48.330 --> 00:03:55.847
are talking about today. And we will also
give a small talk or a small workshop
00:03:55.847 --> 00:03:59.190
about radiation detection tomorrow, in one
of the seminar rooms. So feel free to pass
00:03:59.190 --> 00:04:02.544
by there, it will be a quick introduction.
To give you a small idea of what kind of
00:04:02.544 --> 00:04:08.541
environment we are working for: So if you
would use one of your default intel i7
00:04:08.541 --> 00:04:14.294
CPUs from your notebook and would put it
anywhere where we operate our electronics,
00:04:14.294 --> 00:04:19.632
it would very shortly die in a matter of
probably one or two minutes and it would
00:04:19.632 --> 00:04:24.626
die for more than just one reason, which
is rather interesting and compelling. So
00:04:24.626 --> 00:04:30.985
the idea for today's talk is to give you
all an insight into all the things that
00:04:30.985 --> 00:04:34.575
need to be taken into account when you
design electronics for radiation
00:04:34.575 --> 00:04:39.152
environments. What kinds of different
challenges come when you try to do that.
00:04:39.152 --> 00:04:43.116
We classify and explain the different
types of radiation effects that exist. And
00:04:43.116 --> 00:04:47.617
then we also present what you can do to
mitigate these effects and also validate
00:04:47.617 --> 00:04:52.116
that what you did to care for them or
protect your circuits actually worked. And
00:04:52.116 --> 00:04:57.477
of course, as we do that, we'll try to
give our view on how we develop radiation
00:04:57.477 --> 00:05:03.257
tolerant electronics at CERN and how our
workflow looks like to make sure this
00:05:03.257 --> 00:05:08.272
works. So let's first maybe take a step
back and have a look at what we mean when
00:05:08.272 --> 00:05:12.997
we say radiation environments. The first
one that you probably have in mind right
00:05:12.997 --> 00:05:19.044
now when you think about radiation is
space. So, this interstellar space is
00:05:19.044 --> 00:05:24.292
basically filled with, very high speed,
highly energetic electrons and protons and
00:05:24.292 --> 00:05:28.716
all sorts of high energy particles. And
while they, for example, traverse close to
00:05:28.716 --> 00:05:34.513
planets as our Earth - these planets
sometimes do have a magnetic field and the
00:05:34.513 --> 00:05:39.317
highly energetic particles are actually
deflected by these magnetic fields and
00:05:39.317 --> 00:05:43.824
they can protect the planets as our
planet, for example, from this highly
00:05:43.824 --> 00:05:47.986
energetic radiation. But in the process,
there around these planets sometimes they
00:05:47.986 --> 00:05:52.107
form these radiation belts - known as the
Van Allen belts after the guy who
00:05:52.107 --> 00:05:56.043
discovered this effect a long time ago.
And a satellite in space as it orbits
00:05:56.043 --> 00:06:01.620
around the Earth might, depending on what
orbit is chosen, sometimes go through
00:06:01.620 --> 00:06:05.647
these belts of highly intense radiation.
That, of course, then needs to be taken
00:06:05.647 --> 00:06:11.552
into account when designing electronics
for such a satellite. And if Earth itself
00:06:11.552 --> 00:06:17.191
is not able to give you enough radiation,
you may think of the very famous Juno
00:06:17.191 --> 00:06:22.874
Jupiter mission that has become famous
about a year ago. They actually in the
00:06:22.874 --> 00:06:28.288
environment of Jupiter they anticipated so
much radiation that they actually decided
00:06:28.288 --> 00:06:33.408
to put all the electronics of the
satellite inside a one centimeter thick
00:06:33.408 --> 00:06:39.831
cube of titanium, which is famously known
as the Juno Radiation Vault. But not only
00:06:39.831 --> 00:06:43.870
space offers radiation environments.
Another form of radiation you probably all
00:06:43.870 --> 00:06:48.292
recognize this when I show you this
picture, which is an X-ray image of a
00:06:48.292 --> 00:06:54.936
hand. And X-ray is also considered a form
of radiation. And while, of course, the
00:06:54.936 --> 00:07:01.320
doses or amounts of radiation any patient
is exposed to while doing diagnosis or
00:07:01.320 --> 00:07:05.801
treatment of some disease, that might not
be the full story when it comes to medical
00:07:05.801 --> 00:07:10.220
applications. So this is a medical
particle accelerator which is used for
00:07:10.220 --> 00:07:15.288
cancer treatment. And in these sorts of
accelerators, typically carbon ions or
00:07:15.288 --> 00:07:20.389
protons are accelerated and then focused
and used to treat and selectively destroy
00:07:20.389 --> 00:07:25.302
cancer cells in the body. And this comes
already relatively close to the
00:07:25.302 --> 00:07:29.695
environment we are working in and working
for. So Szymon and I are working, for
00:07:29.695 --> 00:07:36.616
example, on electronics, for the CMS
detector inside the LHC or which we build
00:07:36.616 --> 00:07:43.906
dedicated, radiation tolerant, integrated
circuits which have to withstand very,
00:07:43.906 --> 00:07:49.373
very large amounts and doses of short
lived radiation in order to function
00:07:49.373 --> 00:07:54.414
correctly. And if we didn't specifically
design electronics for that, basically the
00:07:54.414 --> 00:08:01.893
whole system would never be able to work.
To illustrate a bit how you can imagine
00:08:01.893 --> 00:08:06.062
the scale of this environment: This is a
single plot of a collision event that was
00:08:06.062 --> 00:08:11.161
recorded in the ATLAS experiment. And each
of those tiny little traces you can make
00:08:11.161 --> 00:08:15.997
out in this diagram is actually either one
or multiple secondary particles that were
00:08:15.997 --> 00:08:22.166
created in the initial collision of two
proton bunches inside the experiment. And
00:08:22.166 --> 00:08:27.501
in each of those, of course, races around
the detector electronics, which make these
00:08:27.501 --> 00:08:32.817
traces visible. Itself, then decaying into
multiple other secondary particles which
00:08:32.817 --> 00:08:37.856
all go through our electronics. And if
that doesn't sound, let's say, bad enough
00:08:37.856 --> 00:08:42.576
for digital electronics, these collisions
happen about 40 million times a second. Of
00:08:42.576 --> 00:08:47.608
course, multiplying the number of events
or problems they can cause in our
00:08:47.608 --> 00:08:54.608
circuits. So we now want to introduce all
the things that can happen, the different
00:08:54.608 --> 00:08:59.570
radiation effects. But first, probably we
take a step back and look at what we mean
00:08:59.570 --> 00:09:05.805
when we say digital electronics or digital
logic, which we want to focus on today. So
00:09:05.805 --> 00:09:11.058
from your university lectures or your
reading, you probably know the first class
00:09:11.058 --> 00:09:14.577
of digital logic, which is the
combinatorial logic. So this is typically
00:09:14.577 --> 00:09:19.222
logic that just does a simple linear
relation of the inputs of a circuit and
00:09:19.222 --> 00:09:23.956
produces an output as exemplified with
these AND and OR, NAND, XOR gates that you
00:09:23.956 --> 00:09:28.829
see here. But if you want to build - I
mean even though we use those everywhere
00:09:28.829 --> 00:09:32.775
in our circuits - you probably also want
to store state in a more complex circuit,
00:09:32.775 --> 00:09:37.857
for example, in the registers of your CPU
they store some sort of internal
00:09:37.857 --> 00:09:41.736
information. And for that we use the other
class of logic, which is called the
00:09:41.736 --> 00:09:44.726
sequential logic. So this is typically
clocked with some system clock frequency
00:09:44.726 --> 00:09:50.883
and it changes its output with relation to
the inputs whenever this clock signal changes.
00:09:50.883 --> 00:09:54.263
And now if we look at how all
these different logic functionalities are
00:09:54.263 --> 00:09:58.292
implemented. So typically nowadays for
that you may know that we use CMOS
00:09:58.292 --> 00:10:02.340
technologies and basically represent all
this logic functionality as digital gates
00:10:02.340 --> 00:10:10.558
using small P-MOS and N-MOS MOSFET
transistors in CMOS technologies. And if
00:10:10.558 --> 00:10:16.408
we kind of try to build a model for more
complex digital circuits, we typically use
00:10:16.408 --> 00:10:21.814
something we call the finite state machine
model, in which we use a model that
00:10:21.814 --> 00:10:25.822
consists of a combinatorial and a
sequential part. And you can see that the
00:10:25.822 --> 00:10:31.031
output of the circuit depends both on the
internal state inside the register as well
00:10:31.031 --> 00:10:35.331
as also the input to the combinatorial
logic. And accordingly, also the state
00:10:35.331 --> 00:10:40.924
that is internal is always changed by the
inputs as well as the current state. So
00:10:40.924 --> 00:10:44.604
this is kind of the simple model for more
complex systems that can be used to model
00:10:44.604 --> 00:10:50.214
different effects. Um, now let's try to
actually look at what the radiation can do
00:10:50.214 --> 00:10:53.948
to transistors. And for that we are going
to have a quick recap at what the
00:10:53.948 --> 00:10:57.895
transistor actually is and how it looks
like. As you may perhaps know is that in
00:10:57.895 --> 00:11:03.736
CMOS technologies, transistors are built
on wafers of high purity silicon. So this
00:11:03.736 --> 00:11:09.074
is a crystalline, very regularly organized
lattice of silicon atoms. And what we do
00:11:09.074 --> 00:11:14.092
to form a transistor on such a wafer is
that we add dopants. So in order to form
00:11:14.092 --> 00:11:19.629
diffusion regions, which later will become
the source and drain of our transistors.
00:11:19.629 --> 00:11:24.474
And then on top of that we grow a layer of
insulating oxide. And on top of that we
00:11:24.474 --> 00:11:28.713
put polysilicon, which forms the gate
terminal of the transistor. And in the end
00:11:28.713 --> 00:11:32.813
we end up with an equivalent circuit a bit
like that. And now to put things back into
00:11:32.813 --> 00:11:37.670
perspective - you may also note that the
dimension of these structures are very
00:11:37.670 --> 00:11:42.543
tiny. So we talk about tens of nanometers
for some of the dimensions I've outlined
00:11:42.543 --> 00:11:47.958
here. And as the technologies shrink,
these become smaller and smaller and
00:11:47.958 --> 00:11:52.284
therefore you'll probably also realize or
are able to appreciate the small amount of
00:11:52.284 --> 00:11:56.560
energy that are used to store information
inside these digital circuits, which makes
00:11:56.560 --> 00:12:02.390
them perhaps more sensitive to radiation.
So let's take a look. What different types
00:12:02.390 --> 00:12:08.385
of radiation effects exist? We typically
in this case, differentiate them into two
00:12:08.385 --> 00:12:13.268
main classes of events. The first one
would be the cumulative effects, which are
00:12:13.268 --> 00:12:17.362
effects that, as the name implies,
accumulate over time. So as the circuit is
00:12:17.362 --> 00:12:22.127
placed inside some radiation environment,
over time it accumulates more and more
00:12:22.127 --> 00:12:26.969
dose and therefore worsens its performance
or changes how it operates. And on the
00:12:26.969 --> 00:12:30.549
other side, we have the Single Event
Effects, which are always events that
00:12:30.549 --> 00:12:35.075
happen at some instantaneous point in
time, and then suddenly, without being
00:12:35.075 --> 00:12:39.316
predictable, change how the circuit
operates or how it functions or if it
00:12:39.316 --> 00:12:43.931
works in the first place or not. So I'm
going to first go into the class of
00:12:43.931 --> 00:12:47.685
cumulative effects and then later on,
Szymon will go into the other class of the
00:12:47.685 --> 00:12:53.173
Single Event Effects. So in terms of these
accumulating effects, we basically have
00:12:53.173 --> 00:12:57.580
two main subclasses: The first one being
ionization or TID effects, for Total
00:12:57.580 --> 00:13:02.033
Ionizing Dose - and the second one being
displacement damages. So displacement
00:13:02.033 --> 00:13:07.137
damages do exactly what they sound like.
It is all the effects that happen when an
00:13:07.137 --> 00:13:11.249
atom in the silicon lattice is actually
displaced, so removed from its lattice
00:13:11.249 --> 00:13:15.266
position and actually changes the
structure of the semiconductor. But
00:13:15.266 --> 00:13:19.548
luckily, these effects don't have a big
impact in the CMOS digital circuits that
00:13:19.548 --> 00:13:23.164
we are looking at today. So we will
disregard them for the moment and we'll be
00:13:23.164 --> 00:13:28.120
looking more at the ionization damage, or
TID. So ionization - as a quick recap - is
00:13:28.120 --> 00:13:35.901
whenever electrons are removed or added to
an atom, effectively transforming it into
00:13:35.901 --> 00:13:42.747
an ion. And these effects are especially
critical for the circuits we are building
00:13:42.747 --> 00:13:46.316
because of what they do is that they
change the behavior of the transistors.
00:13:46.316 --> 00:13:50.233
And without looking too much into the
semiconductor details, I just want to show
00:13:50.233 --> 00:13:55.730
their typical effect that we are concerned
about in this very simple circuit here. So
00:13:55.730 --> 00:14:00.348
this is just an inverter circuit
consisting of two transistors here and
00:14:00.348 --> 00:14:05.812
there. And what the circuit does in normal
operation is it just takes an input signal
00:14:05.812 --> 00:14:10.062
and inverts and basically gives the
inverted signal at the output. And as the
00:14:10.062 --> 00:14:15.549
transistors are irradiated and accumulate
dose, you can see that the edges of the
00:14:15.549 --> 00:14:20.391
output signal get slower. So the
transistor takes longer to turn on and off.
00:14:20.391 --> 00:14:24.574
And what that does in turn is that it
limits the maximum operation frequency of
00:14:24.574 --> 00:14:28.795
your circuit. And of course, that is not
something you want to do. You want your
00:14:28.795 --> 00:14:31.723
circuit to operate at some frequency in
your final system. And if the maximum
00:14:31.723 --> 00:14:35.600
frequency it can work at degrades over
time, at some point it will fail as the
00:14:35.600 --> 00:14:39.276
maximum frequency is just too low. So
let's have a look at what we can do to
00:14:39.276 --> 00:14:44.395
mitigate these effects. The first one and
I already mentioned it when talking about
00:14:44.395 --> 00:14:48.488
the Juno mission, is shielding. So if you
can actually put a box around your
00:14:48.488 --> 00:14:52.586
electronics and shield any radiation from
actually hitting your transistors, it is
00:14:52.586 --> 00:14:56.900
obvious that they will last longer and
will suffer less from the radiation damage
00:14:56.900 --> 00:15:01.241
that it would otherwise do. So this
approach is very often used in space
00:15:01.241 --> 00:15:04.988
applications like on satellites, but it's
not very useful if you are actually trying
00:15:04.988 --> 00:15:08.209
to measure the radiation with your
circuits as we do, for example, in the
00:15:08.209 --> 00:15:12.415
particle accelerators we build integrated
circuits for. So there first of all, we
00:15:12.415 --> 00:15:16.344
want to measure the radiation so we cannot
shield our detectors from the radiation.
00:15:16.344 --> 00:15:20.592
And also, we don't want to influence the
tracks of these secondary collision
00:15:20.592 --> 00:15:24.162
products with any shielding material that
would be in the way. So this is not very
00:15:24.162 --> 00:15:28.315
useful in a particle accelerator
environment, let's say. So we have to
00:15:28.315 --> 00:15:33.880
resort to different methods. So as I said,
we do have to design our own integrated
00:15:33.880 --> 00:15:38.826
circuits in the first place. So we have
some freedom in what we call transistor
00:15:38.826 --> 00:15:45.236
level design. So we can actually alter the
dimensions of the transistors. We can make
00:15:45.236 --> 00:15:50.055
them larger to withstand larger doses of
radiation and we can use special
00:15:50.055 --> 00:15:54.354
techniques in terms of layout that we can
experimentally verifiy to be more
00:15:54.354 --> 00:15:59.266
resistant to radiation effects. And as a
third measure, which is probably the most
00:15:59.266 --> 00:16:03.491
important one for us, is what we call
modeling. So we actually are able to
00:16:03.491 --> 00:16:08.358
characterize all the effects that
radiation will have on a transistor. And
00:16:08.358 --> 00:16:12.442
if we can do that, if we will know: 'If I
put it into a radiation environment for a
00:16:12.442 --> 00:16:17.000
year, how much slower will it become?'
Then it is of course easy to say: 'OK, I
00:16:17.000 --> 00:16:20.648
can just over-design my circuit and make
it a bit more simple, maybe have less functionality,
00:16:20.648 --> 00:16:24.464
but be able to operate at a
higher frequency and therefore withstand
00:16:24.464 --> 00:16:30.240
the radiation effects for a longer time
while still working sufficiently well at
00:16:30.240 --> 00:16:35.118
the end of its expected lifetime.' So
that's more or less what we can do about
00:16:35.118 --> 00:16:38.254
these effects. And I'll hand over to
Szymon for the second class.
00:16:38.254 --> 00:16:42.655
Szymon: Contrary to the cumulative effects
presented by Stefan, the other group are
00:16:42.655 --> 00:16:46.424
Single Event Effects which are caused by
high energy deposits, which are caused by
00:16:46.424 --> 00:16:52.143
a single particle or shower of particles.
And they can happen at any time, even
00:16:52.143 --> 00:16:57.089
seconds after irradiation is started. It
means that if your circuit is vulnerable
00:16:57.089 --> 00:17:01.667
to this class of effects, it can fail
immediately after radiation is present.
00:17:01.667 --> 00:17:06.313
And here we also classify these effects
into several groups. The first are hard,
00:17:06.313 --> 00:17:11.450
or permanent, errors, which as the name
indicates can permanently destroy your
00:17:11.450 --> 00:17:20.260
circuit. And this type of errors are
typically critical for power devices where
00:17:20.260 --> 00:17:24.340
you have large power densities and they
are not so much of a problem for digital
00:17:24.340 --> 00:17:30.100
circuits. In the other class of effects
are soft errors. And here we distinguish
00:17:30.100 --> 00:17:34.100
transient, or Single Event Transient
errors, which are spurious signals
00:17:34.100 --> 00:17:41.220
propagating in your circuit as a result of
a gate being hit by a particle and they
00:17:41.220 --> 00:17:45.700
are especially problematic for analog
circuits or asynchronous digital circuits,
00:17:45.700 --> 00:17:51.460
but under some circumstances they can be
also problematic for synchronous systems.
00:17:51.460 --> 00:17:56.420
And the other class of problems are
static, or Single Event Upset problems,
00:17:56.420 --> 00:18:01.220
which basically means that your memory
element like a register gets flipped. And
00:18:01.220 --> 00:18:05.060
then of course, if your system is not
designed to handle this type of errors
00:18:05.060 --> 00:18:09.620
properly, it can lead to a failure. So in
the following part of the presentation
00:18:09.620 --> 00:18:15.300
we'll focus mostly on soft errors. So
let's try to understand what is the origin
00:18:15.300 --> 00:18:20.820
of this type of problem. So as Stefan
mentioned, the typical transistor is built
00:18:20.820 --> 00:18:25.230
out of diffusions, gate and channel. So
here you can see one diffusion. Let's
00:18:25.230 --> 00:18:29.230
assume that it is a drain diffusion. And
then when a particle goes through and
00:18:29.230 --> 00:18:36.700
deposits charge, it creates free electron and
hole pairs, which then in the presence of
00:18:36.700 --> 00:18:43.320
electric fields, they get collected by
means of drift, which results in a large
00:18:43.320 --> 00:18:46.930
current spike, which is very short. And
then the rest of the charge could be
00:18:46.930 --> 00:18:50.940
collected by diffusion which is a much
slower process and therefore also the
00:18:50.940 --> 00:18:56.390
amplitude of the event is much, much
smaller. So let's try to understand what
00:18:56.390 --> 00:19:01.230
could happen in a typical memory cell. So
on this schematic, you can see the
00:19:01.230 --> 00:19:05.740
simplest memory cell, which is composed of
two back-to-back inverters. And let's
00:19:05.740 --> 00:19:12.810
assume that node A is at high and node B
is at low potential initially. And then we
00:19:12.810 --> 00:19:17.210
have a particle hitting the drain of
transistor M1 which creates a short
00:19:17.210 --> 00:19:22.590
circuit current between drain and ground,
bringing the drain of transistor M1 to low
00:19:22.590 --> 00:19:29.871
potential, which also acts on the gates of
second inverter, temporarily changing its
00:19:29.871 --> 00:19:38.734
state from low to high, which reinforces
the wrong state in the first inverter. And
00:19:38.734 --> 00:19:45.340
at this time the error is locked in your
memory cell and you basically lost your
00:19:45.340 --> 00:19:49.652
information. So you may be asking
yourself: 'How much charge is needed
00:19:49.652 --> 00:19:54.281
really to flip a state of a memory cell?'.
And you can get this number from either
00:19:54.281 --> 00:19:59.952
simulations or from measurements. So let's
assume that what we could do, we could try
00:19:59.952 --> 00:20:04.605
to inject some current into the sensitive
node, for example, drain of transistor M1.
00:20:04.605 --> 00:20:08.790
And here what I will show is that on the
top plot you will have current as a function
00:20:08.790 --> 00:20:13.484
of time. On the second plot you will have
output voltage. So voltage at node B as a
00:20:13.484 --> 00:20:19.121
function of time and at the lowest plot you
will see a probability of having a bit
00:20:19.121 --> 00:20:23.097
flip. So if you inject very little
current, of course nothing changes at the
00:20:23.097 --> 00:20:27.670
output, but once you start increasing the
amount of current you are injecting, you
00:20:27.670 --> 00:20:33.306
see that something appears at the output
and at some point the output will toggle,
00:20:33.306 --> 00:20:39.747
so it will switch to the other state. And
at this point, if you really calculate
00:20:39.747 --> 00:20:46.369
what is the area under the current curve
you can find what is the critical charge
00:20:46.369 --> 00:20:53.499
needed to flip the memory cell. And if you
go further, if you start injecting even
00:20:53.499 --> 00:21:00.701
more current, you will not see that much
difference in the output voltage waveform.
00:21:00.701 --> 00:21:05.112
It could become only slightly faster. And
at this point, you also can notice that
00:21:05.112 --> 00:21:09.528
the probability now jumped to one, which
means that any time you inject so much
00:21:09.528 --> 00:21:17.431
current there is a fault in your circuit.
So for now, we just found what is the
00:21:17.431 --> 00:21:23.414
probability of having a bit-flip from 0 to
1 in node B. Of course we should also
00:21:23.414 --> 00:21:27.904
calculate the same for the other
direction, so from 1 to zero. And usually
00:21:27.904 --> 00:21:32.377
it is slightly different. And then of
course we should inject in all the other
00:21:32.377 --> 00:21:37.817
nodes, for example node B and also should
study all possible transitions. And then
00:21:37.817 --> 00:21:43.492
at the end, if you calculate the
superposition of these effects and you
00:21:43.492 --> 00:21:48.655
multiply them by the active area of each
node, you will end up with what we call
00:21:48.655 --> 00:21:52.420
the cross section, which has a dimension
of centimeters squared, which will tell
00:21:52.420 --> 00:21:57.357
you how sensitive your circuit is to this
type of effects. And then knowing the
00:21:57.357 --> 00:22:03.761
radiation profile of your environment, you
can calculate the expected upset rate in
00:22:03.761 --> 00:22:10.105
the final application. So now, having
covered the basic of the single event
00:22:10.105 --> 00:22:16.517
effects, let's try to check how we can
mitigate them. And here also technology
00:22:16.517 --> 00:22:20.875
plays a significant role. So of course,
newer technologies offer us much smaller
00:22:20.875 --> 00:22:26.692
devices. And together with that, what
follows is that usually supply voltages
00:22:26.692 --> 00:22:31.047
are getting smaller and smaller as well as
the node capacitance, which means that for
00:22:31.047 --> 00:22:35.565
our Single Event Upsets it is very bad
because the critical charge which is
00:22:35.565 --> 00:22:40.207
required to flip our bit is getting less
and less. But at the end, at the same
00:22:40.207 --> 00:22:44.135
time, physical dimensions of our
transistors are getting smaller, which
00:22:44.135 --> 00:22:48.097
means that the cross section for them
being hit is also getting smaller. So
00:22:48.097 --> 00:22:52.495
overall, the effects really depend on the
circuit topology and the radiation
00:22:52.495 --> 00:22:59.181
environment. So another protection method
could be introduced on the cell level. And
00:22:59.181 --> 00:23:04.914
here we could imagine increasing the
critical charge. And that could be done in
00:23:04.914 --> 00:23:10.819
the easiest way by just increasing the
node capacitance by, for example, putting
00:23:10.819 --> 00:23:16.096
larger transistors. But of course, this
also increases the collection electrode,
00:23:16.096 --> 00:23:22.657
which is not nice. And another way could
be just increase the capacitance by adding
00:23:22.657 --> 00:23:28.336
some extra metal capacitance, but it, of
course, slows down the circuit. Another
00:23:28.336 --> 00:23:33.615
approach could be to try to store the
information on more than two nodes. So I
00:23:33.615 --> 00:23:38.377
showed you that on a simple SRAM cell we
store information only on two nodes, so
00:23:38.377 --> 00:23:43.102
you could try to come up with some other
cells, for example, like that one in which
00:23:43.102 --> 00:23:47.406
the information you stored on four nodes.
So you can see that the architecture is
00:23:47.406 --> 00:23:53.800
very similar to the basic SRAM cell. But
you should be careful always to very
00:23:53.800 --> 00:23:59.000
carefully simulate your design, because if
we analyze this circuit, you will quickly
00:23:59.000 --> 00:24:02.936
realize that this circuit, even though the
information is stored in four different
00:24:02.936 --> 00:24:09.867
nodes, the same type of loop exists as in
the basic circuit. Meaning that at the end
00:24:09.867 --> 00:24:15.227
the circuit offers basically no hardening
with respect to the previous cell. So
00:24:15.227 --> 00:24:21.074
actually we can do it better. So here you
can see a typical dual interlocked cell.
00:24:21.074 --> 00:24:26.445
So the amount of transistors is exactly
the same as in the previous example, but
00:24:26.445 --> 00:24:30.819
now they are interconnected slightly
differently. And here you can see that
00:24:30.819 --> 00:24:36.262
this cell has also two stable configurations.
But this time data can propagate, the low
00:24:36.262 --> 00:24:40.587
level from a given node can propagate
only to the left hand side, while high
00:24:40.587 --> 00:24:47.872
level can propagate to the right hand
side. And each stage being inverting means
00:24:47.872 --> 00:24:54.918
that the fault can not propagate for more
than one node. Of course, this cell has
00:24:54.918 --> 00:25:00.379
some drawbacks: It consumes more area than
a simple SRAM cell and also write access
00:25:00.379 --> 00:25:04.240
requires accessing at least two nodes at
the same time to really change the state
00:25:04.240 --> 00:25:09.801
of the cell. And so you may ask yourself,
how effective is this cell? So here I will
00:25:09.801 --> 00:25:13.709
show you a cross section plot. So it is
the probability of having an error as a
00:25:13.709 --> 00:25:18.883
function of injected energy. And as a
reference, you can see a pink curve on the
00:25:18.883 --> 00:25:25.650
top, which is for a normal, not protected
cell. And on the green you can see the
00:25:25.650 --> 00:25:31.399
cross section for the error in the DICE
cell. So as you can see, it is one order
00:25:31.399 --> 00:25:36.934
of magnitude better than the normal cell.
But still, the cross section is far from
00:25:36.934 --> 00:25:41.426
being negligible, So, the problem was
identified: So it was identified that the
00:25:41.426 --> 00:25:45.679
problem was caused by the fact that some
sensitive nodes were very close together
00:25:45.679 --> 00:25:50.807
on the layout and therefore they could be
upset by the same particle. Because as we
00:25:50.807 --> 00:25:54.721
mentioned, that single devices, they are very
small. We are talking about dimensions
00:25:54.721 --> 00:25:59.675
below a micron. So after realizing that,
we designed another cell in which we
00:25:59.675 --> 00:26:04.799
separated more sensitive nodes and we
ended up with the blue curve, and as you
00:26:04.799 --> 00:26:08.907
can see the cross section was reduced by
two more orders of magnitude and the
00:26:08.907 --> 00:26:14.205
threshold was increased significantly. So
if you don't want to redesign your
00:26:14.205 --> 00:26:18.771
standard cells, you could also apply some
mitigation techniques on block level. So
00:26:18.771 --> 00:26:24.717
here we can use some encoding to encode
our state better. And as an example, I
00:26:24.717 --> 00:26:31.540
will show you a typical Hamming code. So
to protect four bits, we have to add three
00:26:31.540 --> 00:26:38.052
additional party bits which are calculated
according to this formula. And then once
00:26:38.052 --> 00:26:44.133
you calculate the parity bits, you can use
those to check the state integrity of your
00:26:44.133 --> 00:26:50.360
internal state. And if any of their parity
bits is not equal to zero, then the bits
00:26:50.360 --> 00:26:55.375
instantaneously become syndromes,
indicating where the error happened. And
00:26:55.375 --> 00:26:59.916
you can use these information to correct
the error. Of course, in this case, the
00:26:59.916 --> 00:27:06.533
efficiency is not really nice because we
need three additional bits to protect only
00:27:06.533 --> 00:27:11.828
four bits of information. But as the state
length increases the protection also is
00:27:11.828 --> 00:27:18.855
more efficient. Another approach would be
to do even less. Meaning that instead of
00:27:18.855 --> 00:27:23.970
changing anything you need in your design,
you can just triplicate your design or
00:27:23.970 --> 00:27:30.190
multiply it many times and just vote,
which state is correct? So this concept is
00:27:30.190 --> 00:27:35.046
called tripple modular redudancy and it is
based around a voter cell. So it is a
00:27:35.046 --> 00:27:40.210
cell which has odd number of
inputs and output is always equal to
00:27:40.210 --> 00:27:45.040
majority of its input. And as I mentioned
that the idea is that you have, for
00:27:45.040 --> 00:27:49.292
example, three circuits: A, B and C, and
during normal operation, when they are
00:27:49.292 --> 00:27:54.471
identical, the output is also the same.
However, when there is a problem, for
00:27:54.471 --> 00:28:00.957
example, in logic, part B, the output
is affected. So this problem is
00:28:00.957 --> 00:28:05.509
effectively masked by the voter cell
and it is not visible from outside of the
00:28:05.509 --> 00:28:10.383
circuit. But you have to be careful not to
take this picture as a as a design
00:28:10.383 --> 00:28:15.501
template. So let's try to analyze what
would happen with a state machine
00:28:15.501 --> 00:28:20.329
similar to what Stephan introduced. If you
were to just use this concept. So here you
00:28:20.329 --> 00:28:24.859
can see three state machines and
a voter on the output. And as we can see,
00:28:24.859 --> 00:28:29.484
if you have an upside in, for example, the
state register A, then the state is
00:28:29.484 --> 00:28:36.676
broken. But still the output of the
circuit, which is indicated by letter s is
00:28:36.676 --> 00:28:42.355
correct because the B and C registers are
still fine. But what happens if some time
00:28:42.355 --> 00:28:49.283
later we have an upset in memory element B
or C? Then of course the state
00:28:49.283 --> 00:28:56.028
of our system is broken and we can not
recover it. So you can ask yourself what
00:28:56.028 --> 00:29:02.204
can we do better in order to avoid this
situation? So that just to be sure. Please
00:29:02.204 --> 00:29:06.654
do not use this technique to protect your
circuits. So the easiest mitigation could
00:29:06.654 --> 00:29:13.201
be to use as an input to your logic to use
the output of the voter cell itself.
00:29:13.201 --> 00:29:18.491
What it offers us is that now whenever you
have an upset in one of the memory
00:29:18.491 --> 00:29:22.933
elements for the next computation, for the
next stage, we always use the voter
00:29:22.933 --> 00:29:27.631
output, which ensures that the signal
will be removed one clock cycle later. So
00:29:27.631 --> 00:29:32.726
you will have another hit sometime later,
basically, it will not affect our state.
00:29:32.726 --> 00:29:39.765
Until now we consider only upsets in our
registers but what happens if we have
00:29:39.765 --> 00:29:45.885
charge in our voter? So you see that
if there is no state change, basically the
00:29:45.885 --> 00:29:50.981
transient in the voter doesn't impact
our system. But if you are really unlucky
00:29:50.981 --> 00:29:55.777
and the transient happens when the clock
transition happens, so when whenever we
00:29:55.777 --> 00:30:01.182
enlarge the data, we can corrupt the state
in three registers at the same time, which
00:30:01.182 --> 00:30:05.605
is less than ideal. So to overcome this
limitation, you can consider skewing our
00:30:05.605 --> 00:30:11.101
clocks by some time, which is larger than
the maximum charge in time. And now,
00:30:11.101 --> 00:30:18.050
because with each register samples the
output of the voter a slightly different
00:30:18.050 --> 00:30:23.449
time, we can corrupt only one flip-flop
at the time. So of course, if you are
00:30:23.449 --> 00:30:28.780
unlucky, we can have problematic
situations in which one register is
00:30:28.780 --> 00:30:33.646
already in your state. The other register
is still in the old state. And then it
00:30:33.646 --> 00:30:39.728
can lead to undetermenistic result. So it
is better, but still not ideal. So as a
00:30:39.728 --> 00:30:46.578
general theme, you have seen that we were
adding and adding more resources so you
00:30:46.578 --> 00:30:50.418
can ask yourself what would happen if we
tripplicate everything. So in this case,
00:30:50.418 --> 00:30:54.262
we tripplicated registers, we
tripplicate our logic and our voters. And
00:30:54.262 --> 00:30:59.138
now you can see that whenever we have an
upset in our register, it can only affect
00:30:59.138 --> 00:31:04.513
one register at the time and the error
will be removed from the system one clock
00:31:04.513 --> 00:31:08.912
cycle later. Also, if we have an upset
in the voter or in their logic it can be
00:31:08.912 --> 00:31:13.372
larged only to one register, which means
that in principle we create that system
00:31:13.372 --> 00:31:17.885
which is really robust. Unfortunately,
nothing is for free. So here I compare a
00:31:17.885 --> 00:31:22.823
different tripplication environments and
as you can see that the more protection
00:31:22.823 --> 00:31:26.326
you want to have, the more you have to pay
in terms of resources being power in the
00:31:26.326 --> 00:31:31.373
area. And also usual, you pay small
penalty in terms of maximum operational
00:31:31.373 --> 00:31:37.597
speed. So which flavor of protection you
use depends really on
00:31:37.597 --> 00:31:42.420
application. So for most sensitive
circuits, you probably you want to use
00:31:42.420 --> 00:31:48.493
full TMR and you may leave some other
bits of logic unprotected. So another, if
00:31:48.493 --> 00:31:54.749
your system is not mission critical and
you can tolerate some downtime, you can
00:31:54.749 --> 00:32:00.294
consider scrubbing, which means periodically
checking the state of your system and refreshing it
00:32:00.294 --> 00:32:05.120
if necessary if an error is detected using
some parity bits or copy of the data in
00:32:05.120 --> 00:32:10.394
a safe space. Or you can have a
watchdog which will find out that
00:32:10.394 --> 00:32:13.951
something went wrong and it will just
reinitialize the whole system. So now,
00:32:13.951 --> 00:32:20.011
having covered the basics of all the effects
we will have to face, we would like
00:32:20.011 --> 00:32:24.293
to show you the basic flow which we follow
during designing our radiation hardened
00:32:24.293 --> 00:32:29.746
circuits. So of course we always start
with specifications. So we try to
00:32:29.746 --> 00:32:34.228
understand our radiation environment in
which the circuit is meant to operate. So
00:32:34.228 --> 00:32:38.750
we come up with some specifications for
total dose which could be accumulated and
00:32:38.750 --> 00:32:45.348
for the rate of single event upsets. And
at this moment, it is also not very rare
00:32:45.348 --> 00:32:49.705
that we have to decide to move some
functionality out of our detector volume,
00:32:49.705 --> 00:32:56.133
outside, where we can use of the sort of
commercial equipment to do number
00:32:56.133 --> 00:33:04.820
crunching. But let's assume that we would
go with our ASIC. So having the
00:33:04.820 --> 00:33:09.220
specifications, of course we proceed with
functional implementation. This we
00:33:09.220 --> 00:33:14.260
typically do with hardware describtion
languages, so verilog or VHDL which you may
00:33:14.260 --> 00:33:18.900
know from typical FPGA flow. And of course
we write a lot of simulations to
00:33:18.900 --> 00:33:24.205
understand whether we are meeting our
functional goals or whether our circuit
00:33:24.205 --> 00:33:30.665
behaves as expected. And then we
selectively select some parts of the
00:33:30.665 --> 00:33:36.318
circuits which we want to protect from
radiation effects. So, for example, we can
00:33:36.318 --> 00:33:42.290
decide to use triplication or some other
methods. So these days we typically use
00:33:42.290 --> 00:33:46.645
triplication as the most straightforward
and very effective method. So you can ask
00:33:46.645 --> 00:33:50.750
yourself how do we triplicate the logic?
So the simplest could be: Just copy
00:33:50.750 --> 00:33:55.099
and paste the code three times at some
postfixes like A, B and C and you are
00:33:55.099 --> 00:34:01.653
done. But of course this solution has some
drawbacks. So it is time consuming and it
00:34:01.653 --> 00:34:05.964
is very error prone. So maybe you have
noticed that I had a typo there. So of
00:34:05.964 --> 00:34:10.220
course we don't want to do that. So we
developed our own tool, which we called
00:34:10.220 --> 00:34:16.924
TMRG, which automatizes the process of
triplication and eliminates the two main
00:34:16.924 --> 00:34:22.494
drawbacks, which I just described. So
after we have our code triplicated and of
00:34:22.494 --> 00:34:27.075
course, not before rerunning all the
simulations to make sure that everything
00:34:27.075 --> 00:34:34.230
went as expected. We then proceed to the
synthesis process in which we convert our
00:34:34.230 --> 00:34:41.091
high level hardware description languages
to gate level netlists, in which all the functions
00:34:41.091 --> 00:34:46.189
are mapped to gates, which were introduced
by Stefan, so both combinatorial and
00:34:46.189 --> 00:34:53.631
sequential. And here we also have to be
careful because modern CAD tools have a
00:34:53.631 --> 00:34:59.020
tendency, of course, to optimise the logic
as much as possible. And our logic in most
00:34:59.020 --> 00:35:03.810
of the cases is really redundant. So it is
very easy; So, it should be removed. So we
00:35:03.810 --> 00:35:08.632
really have to make sure that it is not
removed. That's why our tool also provides
00:35:08.632 --> 00:35:13.633
some constraints for the synthesizer to
make sure that our design intent is
00:35:13.633 --> 00:35:20.900
clearly and well understood by the tool.
And once we have the output netlist, we
00:35:20.900 --> 00:35:26.980
proceed to place and route process where
this kind of netlist representation is
00:35:26.980 --> 00:35:32.580
mapped to a layout of what will become
soon our digital chip where we placed all
00:35:32.580 --> 00:35:36.624
the cells and we route connections between
them and here there is
00:35:36.624 --> 00:35:40.907
another danger which I mentioned already,
it's that in modern technologies the cells
00:35:40.907 --> 00:35:45.597
are so small that they could be easily
affected by a single particle at the same
00:35:45.597 --> 00:35:51.892
time. So we have to really space out
the big cells which are responsible for
00:35:51.892 --> 00:35:56.982
keeping the information about the state to
make sure that a single particle cannot
00:35:56.982 --> 00:36:04.980
upset A and B, for example, registered
from the same register. And then in the
00:36:04.980 --> 00:36:09.540
last step, of course, we'll have to verify
that everything, what we have done, is
00:36:09.540 --> 00:36:13.926
correct. And at this level, we also try to
introduce some single event effects in our
00:36:13.926 --> 00:36:19.971
simulations. So we could randomly flip
bits in our system. We can also inject
00:36:19.971 --> 00:36:26.094
transients. And typically we used to do
that on the netlist level, which works
00:36:26.094 --> 00:36:31.424
very fine. And it is very nice. But the
problem with this approach is that we can
00:36:31.424 --> 00:36:37.640
perform these actions very late in the
design cycle, which is less than ideal.
00:36:37.640 --> 00:36:43.084
And also that if we find that there is
problem in our simulation, typical netlist
00:36:43.084 --> 00:36:48.437
at this level has probably few orders of
magnitude more lines than our initial RTL
00:36:48.437 --> 00:36:52.990
code. So to trace back what is the
problematic line of code is not so
00:36:52.990 --> 00:36:57.533
straightforward. At this time. So you can
ask yourself why not to try to inject
00:36:57.533 --> 00:37:05.458
errors in the RTL design? And the answer
was, the answer is that it is not so
00:37:05.458 --> 00:37:10.670
trivially to map the hardware description
language's high level constructs to
00:37:10.670 --> 00:37:15.585
what will become combinatorial or
sequential logic. So in order to eliminate
00:37:15.585 --> 00:37:20.980
this problem, we also develop another open
source tool, which allows us to...
00:37:20.980 --> 00:37:27.860
So we decided to use Yosys open
source synthesis tool from clifford, which
00:37:27.860 --> 00:37:31.530
was presented in the Congress several
years ago. So we use this tool to make a
00:37:31.530 --> 00:37:35.680
first pass through our RTL code to
understand which elements will be mapped
00:37:35.680 --> 00:37:40.678
to sequential and combinatorial. And then
having this information, we will use
00:37:40.678 --> 00:37:45.951
cocotb, another python verification
framework, which allows us programmatic
00:37:45.951 --> 00:37:51.838
access to these nodes and we can
effectively inject the errors in our
00:37:51.838 --> 00:37:56.660
simulations. And I forgot to mention that
the TMRG tool is also open source. So if
00:37:56.660 --> 00:38:03.841
you are interested in one of the tools,
please feel free to contact us. And of
00:38:03.841 --> 00:38:10.505
course, after our simulation is done, then in
the next step we would really tape out. And
00:38:10.505 --> 00:38:14.637
so we submit our chip to manufacturing and
hopefully a few months later we receive
00:38:14.637 --> 00:38:18.105
our chip back.
Stefan: All right. So after patiently
00:38:18.105 --> 00:38:23.546
waiting then for a couple of months while
your chip is in manufacturing and you're
00:38:23.546 --> 00:38:28.245
spending time on preparing a test set up
and preparing yourself to actually test if
00:38:28.245 --> 00:38:33.772
your chip works as you expected to. Now,
it's probably also a good time to think
00:38:33.772 --> 00:38:38.307
about how to actually validate or test if
all the measures that you've taken to
00:38:38.307 --> 00:38:41.389
protect your circuit from radiation
effects actually are effective or if they
00:38:41.389 --> 00:38:46.196
are not. And so again, we will split this
in two parts. So you will probably want to
00:38:46.196 --> 00:38:50.024
start with testing for the total ionizing
dose effects. So for the cumulative effect
00:38:50.024 --> 00:38:54.554
and for that, you typically use x ray
radiation relatively similar to the one
00:38:54.554 --> 00:38:59.005
used in medical treatment. So this
radiation is relatively low, energetic,
00:38:59.005 --> 00:39:03.344
which has the upside of not producing any
single event effects, but you can really
00:39:03.344 --> 00:39:07.462
only accumulate radiation dose and focus
on the accumulating effects. And typically
00:39:07.462 --> 00:39:11.600
you would use a machine that looks
somewhat like this, a relatively compact
00:39:11.600 --> 00:39:16.840
thing. You can have in your laboratory and
you can use that to really accumulate
00:39:16.840 --> 00:39:21.520
large amounts of radiation dose on your
circuit. And then you need some sort of
00:39:21.520 --> 00:39:26.641
mechanism to verify or to quantify how
much your circuit slows down due to this
00:39:26.641 --> 00:39:31.285
radiation dose. And if you do that, you
typically end up with a graphic such as
00:39:31.285 --> 00:39:36.567
this one, where in the x axis you have the
radiation dose your circuit was exposed
00:39:36.567 --> 00:39:40.639
to. And on the y axis, you see that the
frequency has gone down over time and you
00:39:40.639 --> 00:39:44.536
can use this information to say:
"OK, my final application, I expect this
00:39:44.536 --> 00:39:49.324
level of radiation dose. I mean, I can
still see that my circuit will work fine
00:39:49.324 --> 00:39:53.565
under some given environmental condition
or some operation condition." So this is
00:39:53.565 --> 00:39:58.285
the test for the first class of effects.
And the test for the second class of
00:39:58.285 --> 00:40:02.318
effects for the single event effect is a
bit more involved. So there what you would
00:40:02.318 --> 00:40:07.157
typically start to do is go for a heavy
ion test campaign. So you would go to a
00:40:07.157 --> 00:40:12.760
specialized, relatively rare facility. We
have a couple of those in Europe and would
00:40:12.760 --> 00:40:16.532
look perhaps somewhat like this. So it's a
small particle accelerator somewhere.
00:40:16.532 --> 00:40:20.794
They typically have
different types of heavy ions at their
00:40:20.794 --> 00:40:26.311
disposal that they can accelerate and then
shoot at your chip that you can place in a
00:40:26.311 --> 00:40:32.390
vacuum chamber and these ions can deposit
very well known amounts of energy in your
00:40:32.390 --> 00:40:36.818
circuit and you can use that information
to characterize your circuit. The downside
00:40:36.818 --> 00:40:41.207
is a bit that these facilities tend to be
relatively expensive to access and also a
00:40:41.207 --> 00:40:45.161
bit hard to access. So typically you need
to book them a lot of time in advance and
00:40:45.161 --> 00:40:50.351
that's sometimes not very easy. But what
it offers you, you can use different types
00:40:50.351 --> 00:40:55.244
of ions with different energies. You can
really make a very well-defined
00:40:55.244 --> 00:41:00.190
sensitivity curve similar to the one that
Szymon has described. You can get from
00:41:00.190 --> 00:41:04.052
simulations and really characterize your
circuit for how often, any single event
00:41:04.052 --> 00:41:09.026
effects will appear in the final
application if there is any remaining
00:41:09.026 --> 00:41:12.827
effects left. If you have left something
unprotected. The problem here is that
00:41:12.827 --> 00:41:18.190
these particle accelerators typically just
bombard your circuit with like thousands
00:41:18.190 --> 00:41:23.310
of particles per second and they hit
basically the whole area in a random
00:41:23.310 --> 00:41:26.940
fashion. So you don't really have a way of
steering those or measuring the position
00:41:26.940 --> 00:41:30.964
of these particles. So typically you are a
bit in the dark and really have to really
00:41:30.964 --> 00:41:34.884
carefully know the behavior of your
circuit and all the quirks it has even
00:41:34.884 --> 00:41:39.481
without the radiation to instantly notice
when something has gone wrong. And
00:41:39.481 --> 00:41:44.088
this is typically not very easy
and you can kind of compare it with having
00:41:44.088 --> 00:41:47.372
some weird crash somewhere in your
software stack and then having to have
00:41:47.372 --> 00:41:51.800
first take a look and see what actually
has happened. Typically
00:41:51.800 --> 00:41:57.058
you find something that has not been
properly protected and you see some weird
00:41:57.058 --> 00:42:01.847
effect on your circuit and then you try to
get a better idea of where that problem
00:42:01.847 --> 00:42:06.256
actually is located. And the answer for
these types of problems involving position
00:42:06.256 --> 00:42:11.381
is, of course, always lasers. So we have
two types of laser experiments available
00:42:11.381 --> 00:42:15.796
that can be used to more selectively probe
your circuit for these problems. The first
00:42:15.796 --> 00:42:19.691
one being the single photon absorption
laser. And it sounds this relatively
00:42:19.691 --> 00:42:24.709
simple in terms of setup. You just use a
single laser beam that shoots straight up
00:42:24.709 --> 00:42:29.884
at your circuit from the back. And while
it does that, it deposits energy all along
00:42:29.884 --> 00:42:34.180
the silicon and also in the diffusions of
your transistors and is therefore also
00:42:34.180 --> 00:42:38.388
able to inject energy there, potentially
upsetting a bit of memory or exposing
00:42:38.388 --> 00:42:43.053
whatever other single event effects you
have. And of course, you can steer this
00:42:43.053 --> 00:42:46.880
beam across the surface of your chip or
whatever circuit you are testing and then
00:42:46.880 --> 00:42:51.330
find the sensitive location. The problem
here is that the amount of energy that is
00:42:51.330 --> 00:42:55.238
deposited is really large due to the fact
that it has to go through the whole
00:42:55.238 --> 00:42:59.053
silicon until it reaches the transistor.
And therefore it's mostly used to find
00:42:59.053 --> 00:43:02.582
these destructive effects that really
break something in your circuit. The more
00:43:02.582 --> 00:43:07.972
clever and somehow beautiful experiment is
the two photon absorption laser experiment
00:43:07.972 --> 00:43:12.624
in which you use two laser beams of a
different wavelength. And these actually
00:43:12.624 --> 00:43:18.366
do not have enough energy to cause any
effect in your silicon. If only one of the
00:43:18.366 --> 00:43:22.174
laser beams is present, but only in the
small location where the two beams
00:43:22.174 --> 00:43:26.874
intersect, the energy is actually large
enough to produce the effect. And this
00:43:26.874 --> 00:43:30.664
allows you to very selectively and only on
a very small volume induce charge and
00:43:30.664 --> 00:43:37.818
cause an effect in your circuit. And when
you do that now, you can systematically
00:43:37.818 --> 00:43:41.964
scan both the X and Y directions across
your chip and also the Z direction and can
00:43:41.964 --> 00:43:46.366
really measure the volume of sensitive
area. And this is what you would typically
00:43:46.366 --> 00:43:50.804
get of such an experiment. So in black and
white in the back, you'll see an infrared
00:43:50.804 --> 00:43:54.621
image of your chip where you can really
make out the individual, say structural
00:43:54.621 --> 00:43:59.406
components. And then overlaid in blue, you
can basically highlight all the sensitive
00:43:59.406 --> 00:44:03.897
points that made you measure something you
didn't expect, some weird bit flip in a
00:44:03.897 --> 00:44:08.338
register or something. And you can really
then go to your layout software and find
00:44:08.338 --> 00:44:13.644
what is the the register or the gate in
your netlist that is responsible for
00:44:13.644 --> 00:44:17.465
this. And then it's more like operating a
debugger in a software environment.
00:44:17.465 --> 00:44:22.889
Tracing back from there what the line of
code responsible for this bug is. And
00:44:22.889 --> 00:44:31.260
to close out, it is always best to learn
from mistakes. And we offer our mistakes
00:44:31.260 --> 00:44:35.901
as a guideline for if you ever feel
yourself the need to design radiation
00:44:35.901 --> 00:44:40.695
tolerant circuits. So we want to present
two or three small issues we had and
00:44:40.695 --> 00:44:45.300
circuits where we were convinced it should
have been working fine. So the first one
00:44:45.300 --> 00:44:50.018
this you will probably recognize is this
full triple modular redundancy scheme that
00:44:50.018 --> 00:44:55.279
Szymon has presented. So we made sure to
triplicate everything and we were relatively
00:44:55.279 --> 00:44:59.102
sure that everything should be fine. The
only modification we did is that to all
00:44:59.102 --> 00:45:03.506
those registers in our design, we've added
a reset, because we wanted to initialize
00:45:03.506 --> 00:45:07.710
the system to some known state when we
started up, which is a very obvious thing
00:45:07.710 --> 00:45:12.327
to do. Every CPU has a reset. But of
course, what we didn't think about here
00:45:12.327 --> 00:45:16.577
was that at some point there's a buffer
driving this reset line somewhere. And if
00:45:16.577 --> 00:45:20.355
there's only a single buffer. What happens
if this buffer experiences a small
00:45:20.355 --> 00:45:24.501
transient event? Of course, the obvious
thing that happened is that as soon as
00:45:24.501 --> 00:45:28.247
that happened, all the registers were
upset at the same time and were basically
00:45:28.247 --> 00:45:32.205
cleared and all our fancy protection was
invalidated. So next time we decided,
00:45:32.205 --> 00:45:37.679
let's be smarter this time. And of course,
we triplicate all the logic and all the
00:45:37.679 --> 00:45:40.633
voters and all the registers. So let's
also triplicate the reset lines. And while
00:45:40.633 --> 00:45:44.955
the designer of that block probably had
very good intentions, it turned out
00:45:44.955 --> 00:45:49.268
that later than when we manufactured the
chip, it still sometimes showed a complete
00:45:49.268 --> 00:45:54.570
reset without any good explanation for
that. And what was left out of the the
00:45:54.570 --> 00:45:59.981
scope of thinking here was that this reset
actually was connected to the system reset
00:45:59.981 --> 00:46:05.033
of the chip that we had. And typically
pins are on the chip or something that is
00:46:05.033 --> 00:46:09.005
not available in huge quantities. So you
typically don't want to spend three pins
00:46:09.005 --> 00:46:13.128
of your chip just for a stupid reset that
you don't use ninety nine percent of the
00:46:13.128 --> 00:46:17.895
time. So what we did at some point we just
connected again the reset lines to a
00:46:17.895 --> 00:46:21.972
single input buffer. That was then
connected to a pin of the chip. And of
00:46:21.972 --> 00:46:25.590
course, this also represented a small
sensitive area in the chip. And again,
00:46:25.590 --> 00:46:30.216
a single upset here was able to destroy
all three of our flip flops. All right.
00:46:30.216 --> 00:46:35.132
And the last lesson I'm bringing or the
last thing that goes back to the
00:46:35.132 --> 00:46:38.930
implementation details that Szymon has
mentioned. So this time, really simple
00:46:38.930 --> 00:46:42.532
circuit. We were absolutely convinced it
must work because it was basically the
00:46:42.532 --> 00:46:46.072
textbook example that Szymon was
presenting. And the code was so
00:46:46.072 --> 00:46:49.817
small we were able to inspect everything
and were very much sure that nothing
00:46:49.817 --> 00:46:54.690
should have happened. And what we saw when
we went for this laser testing experiment,
00:46:54.690 --> 00:46:59.769
in simplified form is basically that
only this first voter. And when this was
00:46:59.769 --> 00:47:04.414
hit, always all our register was
upset while the other ones were
00:47:04.414 --> 00:47:09.161
never manifested to show anything strange.
And it took us quite a while to actually
00:47:09.161 --> 00:47:13.563
look at the layout later on and figure out
that what was in the chip was rather this.
00:47:13.563 --> 00:47:17.250
So two of the voters were actually not
there. And Szymon mentioned the reason for
00:47:17.250 --> 00:47:21.208
that. So synthesis tool these days are
really clever at identifying redundant
00:47:21.208 --> 00:47:26.102
logic and because we forgot to tell it to
not optimize these redundant pieces of
00:47:26.102 --> 00:47:30.248
logic, which the voters really are. It
just merged them into one. And that
00:47:30.248 --> 00:47:34.393
explains why we only saw this one voter
being the sensitive one. And of course, if
00:47:34.393 --> 00:47:38.255
you have a transient event there, then you
suddenly upset all your registers and that
00:47:38.255 --> 00:47:41.871
without even knowing it and with being
sure, having looked at every single line
00:47:41.871 --> 00:47:45.652
of verilog code and being very sure,
everything should have been fine. But that
00:47:45.652 --> 00:47:51.805
seems to be how this business goes. So we
hope we had been we had the chance and you
00:47:51.805 --> 00:47:56.648
were able to get some insight in in what
we do to make sure the experiments at the
00:47:56.648 --> 00:48:01.966
LHC work fine. What you can do to
make sure the satellite you are working on
00:48:01.966 --> 00:48:06.393
might be working OK. Even before launching
it into space, if you're interested into
00:48:06.393 --> 00:48:10.715
some more information on this topic, feel
free to pass by at the assembly I
00:48:10.715 --> 00:48:15.014
mentioned at the beginning or just meet us
after the talk and otherwise thank you
00:48:15.014 --> 00:48:22.286
very much.
Applause
00:48:22.286 --> 00:48:27.041
Herald: Thank you very much indeed.
There's about 10 minutes left for Q and A,
00:48:27.041 --> 00:48:31.872
so if you have any questions go to a
microphone. And as a cautious reminder,
00:48:31.872 --> 00:48:38.297
questions are short sentences with. That
starts with a question. Well, ends with a
00:48:38.297 --> 00:48:42.548
question mark and the first question goes
to the Internet.
00:48:42.548 --> 00:48:46.433
Internet: Well, hello. Um, do you also
incorporate radiation as the source for
00:48:46.433 --> 00:48:50.596
randomness when that's needed?
Stefan: So we personally don't. So in our
00:48:50.596 --> 00:48:56.880
designs we don't. But it is done indeed
for a random number generator. This is
00:48:56.880 --> 00:49:01.081
sometimes done that they use radioactive
decay as a source for randomness. So this
00:49:01.081 --> 00:49:03.989
is done, but we don't do it in our
experiments.
00:49:03.989 --> 00:49:06.802
We rather want deterministic data out of
the things we built.
00:49:06.802 --> 00:49:10.929
Herald: Okay. Next question goes to
microphone number four.
00:49:10.929 --> 00:49:16.714
Mic 4: Do you do your tripplication before
or after elaboration?
00:49:16.714 --> 00:49:21.003
Szymon: So currently we do it before
elaboration. So we decided that our tool
00:49:21.003 --> 00:49:25.764
works on verilog input and it produces
verilog output because it offers much more
00:49:25.764 --> 00:49:30.496
flexibility in the way how you can
incorporate different tripplication
00:49:30.496 --> 00:49:34.423
schemes. If you were to apply to only
after elaboration, then of course doing a
00:49:34.423 --> 00:49:38.453
full tripplication might be easy. But then
you - to having a really precise control
00:49:38.453 --> 00:49:43.438
or on types of tripplication on different
levels is much more difficult.
00:49:43.438 --> 00:49:47.296
Herald: Next question from microphone
number two.
00:49:47.296 --> 00:49:50.840
Mic 2: Is it possible to use DCDC
converters or switch mode power supplies
00:49:50.840 --> 00:49:54.630
within the radiation environment to power
your logic? Or you use only linear power?
00:49:54.630 --> 00:49:59.866
Szymon: Yes, alternatively we also have a
dedicated program which develops radiation
00:49:59.866 --> 00:50:05.366
hardened DCDC converters who operate
in our environments. So they are available
00:50:05.366 --> 00:50:10.988
also for space applications, as far as I'm
aware. And they are hardened against total
00:50:10.988 --> 00:50:16.027
ionizing dose as well as single event
upsets.
00:50:16.027 --> 00:50:19.667
Herald: Okay next question goes to
microphone number one.
00:50:19.667 --> 00:50:22.614
Mic 1: Thank you very much for the great
talk. I'm just wondering, would it be
00:50:22.614 --> 00:50:27.435
possible to hook up every logic gate in
every water in a way of mesh network? And
00:50:27.435 --> 00:50:31.873
what are the pitfalls and limitations for
that?
00:50:31.873 --> 00:50:36.734
Stefan: So that is not something I'm aware
of, of being done. So typically: No. I
00:50:36.734 --> 00:50:41.473
wouldn't say that that's something we
would do.
00:50:41.473 --> 00:50:43.431
Szymon: I'm not really sure if I
understood the question.
00:50:43.431 --> 00:50:46.401
Stefan: So maybe you can rephrase what
your idea is?
00:50:46.401 --> 00:50:52.613
Mic 1: On the last slide, there were a
lesson learned.
00:50:52.613 --> 00:50:56.253
Stefan: Yes. One of those?
Mic 1: In here. Yeah. Would you be able to
00:50:56.253 --> 00:51:00.309
connect everything interchangeably in a
mesh network?
00:51:00.309 --> 00:51:04.030
Szymon: So what you are probably asking
about is whether we can build our own
00:51:04.030 --> 00:51:08.166
FPGA, like programable logic device.
Mic 1: Probably.
00:51:08.166 --> 00:51:11.074
Szymon: Yeah. And so this we typically
don't do, because in our experiments, our
00:51:11.074 --> 00:51:15.857
power budget is also very limited, so we
cannot really afford this level of
00:51:15.857 --> 00:51:20.903
complexity. So of course you can make your
FPGA design radiation hard, but this is
00:51:20.903 --> 00:51:24.890
not what we will typically do in our
experiments.
00:51:24.890 --> 00:51:28.630
Herald: Next question goes to microphone
number two.
00:51:28.630 --> 00:51:32.059
Mic 2: Hi, I would like to ask if the
orientation of your transistors and your
00:51:32.059 --> 00:51:38.029
chip is part of your design. So mostly you
have something like a bounding box around
00:51:38.029 --> 00:51:42.921
your design and with an attack surface in
different sizes. So do you use this
00:51:42.921 --> 00:51:48.350
orientation to minimize the attack surface
of the radiation on chips, if you know
00:51:48.350 --> 00:51:52.616
the source of the radiation?
Szymon: No. So I don't think we'd do that.
00:51:52.616 --> 00:51:58.515
So, of course, we control our orientation
of transistors during the design phase.
00:51:58.515 --> 00:52:02.651
But usually in our experiment, the
radiation is really perpendicular to the
00:52:02.651 --> 00:52:07.981
chip area, which means that if you rotate
it by 90 degrees, you don't really gain
00:52:07.981 --> 00:52:12.082
that much. And moreover, our chips,
usually they are mounted in a bigger
00:52:12.082 --> 00:52:16.625
system where we don't control how they are
oriented.
00:52:16.625 --> 00:52:24.420
Herald: Again, microphone number two.
Mic 2: Do you take meta stability into
00:52:24.420 --> 00:52:33.140
account when designing voters?
Szymon: The voter itself is combinatorial.
00:52:33.140 --> 00:52:38.820
So ... -
Mic 2: Yeah, but if the state of the rest
00:52:38.820 --> 00:52:45.300
can change in any time that then the
voters can have like glitches, yeah?
00:52:45.300 --> 00:52:51.140
Szymon: Correct. So that's why - so to
avoid this, we don't take it into account
00:52:51.140 --> 00:52:55.060
during the design phase. But if we use
that scheme which is just displayed here,
00:52:55.060 --> 00:52:58.980
we avoid this problem altogether, right?
Because even if you have meta stability in
00:52:58.980 --> 00:53:05.300
one of the blocks like A, B or C, then it
will be fixed in the next clock cycle.
00:53:05.300 --> 00:53:09.940
Because usually our systems operate on
clocks with low frequencies, hundreds of
00:53:09.940 --> 00:53:13.236
megahertz, which means that any meta
stability should be resolved by the next
00:53:13.236 --> 00:53:15.065
clock cycle.
Mic 2: Thank you.
00:53:15.065 --> 00:53:19.145
Herald: Next question microphone number
one.
00:53:19.145 --> 00:53:23.014
Mic 1: How do you handle the register
duplication that can be performed by a
00:53:23.014 --> 00:53:27.947
synthesis and pleasant route? So the tools
will try to optimize timing sometimes by
00:53:27.947 --> 00:53:32.375
adding registers. And these registers are
not trippled.
00:53:32.375 --> 00:53:35.784
Stefan: Yes. So what we do is that I mean,
in a typical, let's say, standard ASIC
00:53:35.784 --> 00:53:40.405
design flaw, this is not what happens. So
you have to actually instruct a tool to do
00:53:40.405 --> 00:53:44.585
that, to do re timing and add additional
registers. But for what we are doing, we
00:53:44.585 --> 00:53:48.174
have to - let's say not do this
optimization and instruct a tool to keep
00:53:48.174 --> 00:53:52.823
all the registers we described in our RTL
code to keep them until the very end. And
00:53:52.823 --> 00:53:56.908
we realy also constrain them to always
keep their associated logic tripplicated.
00:53:56.908 --> 00:54:01.759
Herald: The next question is from the
internet.
00:54:01.759 --> 00:54:07.887
Internet: Do you have some simple tips for
improving radiation tolerance?
00:54:07.887 --> 00:54:12.020
Stefan: Simple tips? Ahhhm...
Szymon: Put your electronics inside a
00:54:12.020 --> 00:54:12.820
box.
Stefan: Yes.
00:54:12.820 --> 00:54:17.380
some laughter
There's there's just no
00:54:17.380 --> 00:54:22.980
single one size fits all textbook recipe
for this as it really always comes down to
00:54:22.980 --> 00:54:28.020
analyzing your environment, really getting
an awareness first of what rate and what
00:54:28.020 --> 00:54:31.940
number of events you are looking at, what
type of particles cause them, and then
00:54:31.940 --> 00:54:36.420
take the appropriate measures to mitigate
them. So there is no one size fits all
00:54:36.420 --> 00:54:38.095
thing I say.
Herald: Next question goes from mycrophone
00:54:38.095 --> 00:54:41.620
number two.
Mic 2: Hi. Thanks for the talk. How much
00:54:41.620 --> 00:54:47.611
of your software used to design is
actually open source? I only know a super
00:54:47.611 --> 00:54:54.495
expensive chip design software.
Stefan: You write the core of all the
00:54:54.495 --> 00:55:00.604
implementation tools like the synthesis
and place and route stage for the ASICS,
00:55:00.604 --> 00:55:04.987
that we design is actually a commercial
closed source tools. And if
00:55:04.987 --> 00:55:10.443
you're asking for the fraction, that's a
bit hard to answer. I cannot give a
00:55:10.443 --> 00:55:14.518
statement about the size of the commercial
closed tools. But we tried to do
00:55:14.518 --> 00:55:18.638
everything we develop, tried to make it
available to the widest possible audience
00:55:18.638 --> 00:55:22.353
and therefore decided to make the
extensions to this design flaw available
00:55:22.353 --> 00:55:26.237
in public form. And that's why these
tools that we develop and share among the
00:55:26.237 --> 00:55:30.541
community of ASIC designers and this
environment are open source.
00:55:30.541 --> 00:55:35.196
Herald: Microphone number four.
Mic 4: Have you ever tried using steered
00:55:35.196 --> 00:55:41.098
iron beams for more localized, radiation
ingress testing?
00:55:41.098 --> 00:55:44.495
Stefan: Yes, indeed! And the picture I
showed actually, uh, didn't disclaimer
00:55:44.495 --> 00:55:49.311
that, but the facility you saw here is
actually a facility in Darmstadt in
00:55:49.311 --> 00:55:53.366
Germany and is actually a micro beam
facility. So it's a facility that allows
00:55:53.366 --> 00:55:58.400
steering a heavy ion beam really on a
single position with less than a
00:55:58.400 --> 00:56:01.808
micrometer accuracy. So it provides
probably exactly what you were asking for.
00:56:01.808 --> 00:56:05.854
But that's not the typical case. That is
really a special thing. And it's probably
00:56:05.854 --> 00:56:09.405
also the only facility in Europe that can
do that.
00:56:09.405 --> 00:56:13.316
Herald: Microphone number one.
Mic 1: Was very good very good talk. Thank
00:56:13.316 --> 00:56:19.282
you very much. My question is, did you
compare what you did to what is done for
00:56:19.282 --> 00:56:25.380
securing secret chips? You know, when you
have credit card chips, you can make fault
00:56:25.380 --> 00:56:29.949
attacks into them so you can make them
malfunction and extract the cryptographic
00:56:29.949 --> 00:56:33.830
key for example from the banking card.
There are techniques here to harden these
00:56:33.830 --> 00:56:38.207
chips against fault attacks. So which are
like voluntary faults while you have like
00:56:38.207 --> 00:56:43.121
random less faults due to like involatility
attacks. You know what? Can you explain if
00:56:43.121 --> 00:56:47.294
you compared in a way what you did to
this?
00:56:47.294 --> 00:56:50.861
Stefan: Um, so no, we didn't explicitly
compared it, but it is right that the
00:56:50.861 --> 00:56:54.427
techniques we present can also be used in
a variety of different contexts. So one
00:56:54.427 --> 00:56:59.134
thing that's not exactly what you are
referring to, but relatively on a similar
00:56:59.134 --> 00:57:03.513
scale is that currently in very small
technologies you get two problems with the
00:57:03.513 --> 00:57:07.855
reliability and yield of the manufacturing
process itself, meaning that sometimes
00:57:07.855 --> 00:57:11.721
just the metal interconnection between two
gates and your circuit might be broken
00:57:11.721 --> 00:57:16.297
after manufacturing and then adding the
sort of redundancy with the same kinds of
00:57:16.297 --> 00:57:20.576
techniques can be used to make, to
produce more working chips out of a
00:57:20.576 --> 00:57:24.715
manufacturing run. So in this sort of
context, these sorts of techniques are
00:57:24.715 --> 00:57:30.674
used very often these days. But, um, I'm
and I'm pretty sure they can be applied to
00:57:30.674 --> 00:57:34.953
these sorts of, uh, security fault attack
scenarios as well.
00:57:34.953 --> 00:57:39.703
Herald: Next question from microphone
number two.
00:57:39.703 --> 00:57:44.126
Mic 2: Hi, you briefly also mentioned the
mitigation techniques on the cell level
00:57:44.126 --> 00:57:52.426
and yesterday there was a very nice talk
from the Libre Silicon people and they
00:57:52.426 --> 00:57:55.914
are trying to build a standard cell
library, uh, open source standard cell
00:57:55.914 --> 00:58:00.015
library. So are you in contact with them
or maybe you could help them to improve
00:58:00.015 --> 00:58:03.980
their design and then the radiation
hardness?
00:58:03.980 --> 00:58:07.430
Stefan: No. We also saw the talk
yesterday, but we are not yet in
00:58:07.430 --> 00:58:14.180
contact with them. No.
Herald: Does the Internet have questions?
00:58:14.180 --> 00:58:21.380
Internet: Yes, I do. Um, two in fact.
First one would be would TTL or other BJT
00:58:21.380 --> 00:58:26.740
based logic be more resistant?
Szymon: Uh, yeah. So depending on which
00:58:26.740 --> 00:58:31.126
type of errors we are considering. So BJT
transistors, they have ...
00:58:31.126 --> 00:58:35.917
Stefan in his part mentioned that
displacement damage is not a problem for
00:58:35.917 --> 00:58:40.305
seamless devices, but it is not the case
for BJT devices. So when they are exposed
00:58:40.305 --> 00:58:47.074
to high energy hadrons or protons,
they degrade a lot. So that's why we don't
00:58:47.074 --> 00:58:52.393
use them in really our environment. They
could be probably much more robust to
00:58:52.393 --> 00:58:57.369
single event effects because their
resistance everywhere is much lower. But
00:58:57.369 --> 00:59:01.633
they would have other problems. And also
another problem which is worth
00:59:01.633 --> 00:59:06.204
mentioning is that for those devices, they
consume much, much, much more power, which
00:59:06.204 --> 00:59:13.041
we cannot afford in our applications.
Internet: And the last one would be how do
00:59:13.041 --> 00:59:19.396
I use the output of the full TMR setup? Is
it still three signals? How do I know
00:59:19.396 --> 00:59:26.260
which one to use and to trust?
Stefan: Um, yes. So with this, um,
00:59:26.260 --> 00:59:30.047
architecture, what you could either do is
really do the full triplication scheme
00:59:30.047 --> 00:59:34.804
to your whole logic tree basically and
really triplicate everything or, and
00:59:34.804 --> 00:59:38.903
that's going in the direction of one of
the lessons learned I had, at some point
00:59:38.903 --> 00:59:43.261
of course you have an interface to your
chip, so you have pins left and right that
00:59:43.261 --> 00:59:46.630
are inputs and outputs. And then you have
to decide either you want to spend the
00:59:46.630 --> 00:59:51.025
effort and also have three dedicated input
pins for each of the signals, or you at
00:59:51.025 --> 00:59:54.260
some point have the voter and say, okay.
At this point, all these signals are
00:59:54.260 --> 00:59:58.202
combined. But I was able to reduce the
amount of sensitive area in my chip
00:59:58.202 --> 01:00:03.780
significantly and can live with the very
small remaining sensitive area that just
01:00:03.780 --> 01:00:07.460
the input and output pins provide.
Szymon: So maybe I will add one more thing
01:00:07.460 --> 01:00:11.780
is that typically in our systems, of
course we triplicate our logic internally,
01:00:11.780 --> 01:00:15.300
but when we interface with external
world, we can apply another protection
01:00:15.300 --> 01:00:20.340
mechanism. So for example, for our high
speed serialisers, we will use different types
01:00:20.340 --> 01:00:23.733
of encoding to add protect...,
to add like forward error correction
01:00:23.733 --> 01:00:30.340
codes which would allow us to recover these
type of faults in the backend later on.
01:00:30.340 --> 01:00:36.522
Herald: Okay. If ...if we keep this very,
very short. Last question goes to
01:00:36.522 --> 01:00:41.401
microphone number two.
Mic 2: I don't know much about physics. So
01:00:41.401 --> 01:00:47.370
just the question, how important is the
physical testing after the chip is
01:00:47.370 --> 01:00:51.895
manufactured? Isn't the simulation, the
computer simulation enough if you just
01:00:51.895 --> 01:00:56.332
shoot particles at it?
Stefan: Yes and no. So in principle, of
01:00:56.332 --> 01:01:01.267
course, you are right that you should be
able to simulate all the effects we look
01:01:01.267 --> 01:01:06.531
at. The problem is that as the designs
grow big and they do grow bigger as the
01:01:06.531 --> 01:01:10.892
technologies shrink, so
this final net list that you end up with
01:01:10.892 --> 01:01:15.175
can have millions or billions of nodes and
it just is not feasible anymore to
01:01:15.175 --> 01:01:19.558
simulate it exhaustively because you have
to have so many dimensions. You have to
01:01:19.558 --> 01:01:25.852
change when you inject. For example, bit
flips or transients in your design in any
01:01:25.852 --> 01:01:30.745
of those nodes for varying time offsets.
And it's just the state space the circuit
01:01:30.745 --> 01:01:34.553
can be in is just too huge to capture in a
in a full simulation. So it's not possible
01:01:34.553 --> 01:01:38.803
to exhaustively test it in simulation. And
so typically you end up with having missed
01:01:38.803 --> 01:01:43.048
something that you discover only in the
physical testing afterwards, which you
01:01:43.048 --> 01:01:47.311
always want to do before you put your, uh,
your chip into final experiment or on your
01:01:47.311 --> 01:01:50.934
satellite and then realise it's it's not
working as intended. So it has a big
01:01:50.934 --> 01:01:55.540
importance as well.
Herald: Okay. Thank you. Time is up. All
01:01:55.540 --> 01:01:58.584
right. Thank you all very much.
NOTE Paragraph
01:01:58.584 --> 01:02:04.602
applause
01:02:04.602 --> 01:02:09.599
36c3 postroll music
01:02:09.599 --> 01:02:32.100
Subtitles created by c3subtitles.de
in the year 2021. Join, and help us!