Professional Documents
Culture Documents
Lab Section: D
Graded by _______________________________________________________
Score ______________________________________________________
Introduction:
Problem:
In the semiconductor world we have issues of parts
being counterfeited and sold illegally. In a world where
you can surf the web and buy exactly the parts you need
about anywhere you have no way of knowing a counterfeit from
a real deal till its to late... Or can you?
Solution:
The Math:
The Process:
Whats Next:
INVERTER_SYMBOL INVERTER_TEST_BENCH
Using the symbol file for the inverter we create a simple test
bench to see that the output is inverted.
INVERTER_SIMULATION
PUF_ONE_BIT_SCHEMATIC
PUF_ONE_BIT_SYMBOL
EE_330 Final_Project
PUF_ONE_BIT_TESTBENCH
Testing the PUF using a regular testbench inst ideal since the
random is caused upon manufacturing, so we have a statistical
based software that mimics manufacturing defect to test the
random variance in the circuit. We will use this later but for
now I will use simple test benches that will prove that its
connected properly with its static data.
PUF_ONE_BIT_SIMULATION
PUF_FOUR_BIT_SCHEMATIC
We will now pick up the pace a bit starting from here moving up
the parts. This is a 4 Bit Puf crafted with 4 single bit pufs.
PUF_FOUR_BIT_SYMBOL PUF_FOUR_BIT_SIMULATION
PUF_FOUR_BIT_TESTBENCH
EE_330 Final_Project
PUF_SIXTEEN_BIT_SCHEMATIC PUF_SIXTEEN_BIT_STATIC
PUF_SIXETTEN_BIT_TEXTBENCH PUF_SIXTEEN_BIT_SYMBOL
EE_330 Final_Project
PUF_THIRTY_TWO_BIT_SCHEMATIC
We use the same process over and over using multiple of smaller
PUFS to make larger ones, but since we already made a 16 bit put
we only need to multiply that one by 2x instead of 4x to get to
the full 32 bits needed.
EE_330 Final_Project
PUF_THIRTY_TWO_BIT_SYMBOL
With each step closer to the final product I make my designs more
elaborate.
EE_330 Final_Project
PUF_THIRTY_TWO_BIT_TEST_BENCH
PUF_THIRTY_TWO_BIT_STATIC_RESPONSE
EE_330 Final_Project
MONTE_CARLOS_SIMULATION
On this test the VDD is rising from 0 to its max value of 1.6V.
Along the way each of the 32 bits of the PUF randomly pulls
itself to the 0 ground or current VDD value, this simulation is
ran a total of 100 times to show that the bits arent consistently
going one way or another. The above shows the 32 * 100, 3,200
bends of a curve for the PUF bits.
EE_330 Final_Project
MONTE_CARLOS_SIMULATION_SINGLE_BIT
EE_330 Final_Project
Above we select a single bit to view and as you can see out of
100 simulations that bit is all over the place. This shows the
random factor. But wait, are they just locking in a place
consistently based on the slope of VDD??? Well lets find out
with further simulations below.
Rise: 1u
Rise: 2u
Rise: 5u
EE_330 Final_Project
We can observe that with the increase of time with the rise of
vdd the slope has become much slower, but using the same Monte
Carlos variance of random, we still achieve the same results in
each run. Proving that the values are based on manufacturing
defects and not a VDDs pull on a specific bit. So now that we
have a full working 32 Bit Puf lets move on to the 32 bit shift
register.
NAND_TWO_INPUT_SCHEMATIC NAND_TWO_INPUT_SYMBOL
Nands are quite simple to make, requiring one pmos and one nmos
per input. The pmos are placed in parallel in the pull up section
and the nmos are placed in series in the pull down section. So
for a two input nand we use 4 minimal sized transistors.
EE_330 Final_Project
NAND_TWO_INPUT_TESTBENCH
NAND_TWO_INPUT_SIMULATION
A B F
1 1 0
0 1 1
1 0 1
0 0 1
And a NAND should function as VDD wherever A and B dont equal VDD
which is what we get so it works. Next we need a good mux.
EE_330 Final_Project
MULTIPLEXER_TWO_INPUT_SCHEMATIC
Logic_Table_Mux
MUX_TWO_INPUT_SYMBOL MUX_TWO_INPUT_SIMULATION
MUX_TWO_INPUT_TESTBENCH
DFF_ORIGINAL_SCHEMATIC
POSITIVE_EDGE_TRIGGERED_DFF_SCHEMATIC
With the new DFF design we require more parts! Five two input
NAND gates which is a total of 20 transitors, and one more three
input nand which will require an additional 6 transistors. So we
are looking at about 26 transistors per DFF.
So for the new part:
NAND_THREE_INPUT_SCHEMATIC
EE_330 Final_Project
SYMBOL NAND_THREE_INPUT_TESTBENCH
NAND_THREE_INPUT_SIMULATION
A 1 0 1 0 1 0 1 0
B 1 1 0 0 1 1 0 0
C 1 1 1 1 0 0 0 0
VOUT 0 1 1 1 1 1 1 1
PT_DFF_SYMBOL PT_DFF_TESTBENCH
DFF_SIMULATION
REGISTER_ONE_BIT_SCHEMATIC
SHIFT_REGISTER_ONE_BIT_TESTBENCH
SR1B_SIMULATION
Unfortunately, until we get
more bits to work with we can
only load one value and mess
around with enable. So for
purpose of testing simple
functionality I grounded init
and clocked the clock and
previous. I then delay turned
on enable as I would normally
do in this type of a
simulation.
EE_330 Final_Project
We've made it to the final piece, now time to test this bad boy!
EE_330 Final_Project
THIRTY_TWO_BIT_SHIFT_REGISTER_TESTBENCH
Conclusion:
Since we have proven both part worth efficiently, the final part
does not need a test to suggest that together they can implement
perfectly! The final piece is workable with a single output pin,
an Enable, CLK, VDD, and VSS. Since the total transistor count
is the 64 for the PUF, plus the 1,280 for the register. The total
transistor count for implementation comes to 1,344 transistors.
Which is a few penny's in a pond next to a billion transistor
chip. So, if you want to help make the world a better place with
fewer counterfeited chips, then get your PUF today and secure
your property!