Silicon is my main interest. I need tha hardware. GIMME HARDWARE. Firmware is fine and good, but hardware hacking is the most fun. Gotta push the chip to the limits and make it do stuff it wasn’t supposed to do. Make use of every gate on that chip! Why else are they there?
I’ve done a fair amount of overclocking with the Raspberry Pi RP2040. It’s actually super easy to overclock, and one of my designs (the Rick Roll SAO) relies on it to function. It’s pretty widely known in the community that you can push the clock speed chip pretty far without a whole lot of consequences.
This docments my endeavors to not only overclock the newer, more powerful RP2350, but to characterize the silicon and develop an algorithm that automatically overclocks for you. I hope I don’t cause a run on chips with high RO values.
Not go to all mommy blogger on you, but there’s a bit of backstory here
DEF CON 32
I attended DEF CON 32 this year, where the RP2350 powered the main admission badge that was handed out to con-goers. Here’s mine hooked up to a JTAG debugger in my hotel room
Raspberry Pi actually had a prescence at the convention, and principle engineer Luke Wren was there at their booth. I spoke with them a lot about silicon, overall they seemed super cool. After a long conversation, they gave me some samples of the RP2350 microcontroller to take home! I was super stoked. I promised I would make something worthwhile with the chips.
The second day of the con they brought some even more cool stuff.
This is their internal test jig they used for the RP2350 (I think, this might have been for the 2040). I thought I was just allowed to look but they let me touch it and get a couple photos. Usually stuff like this requires an NDA.
The chips themselves are on these daughterboards that snap into the jig with a couple of high pin count connectors. Really cool design.
They also had a super early version of the Pico. Originally, this was supposed to be known as the Picoboard, as you can see on the silkscreen. There’s a little space invader on it too, Luke told me they wrote a space invader demo for the board.
Anyway.
The Idea
I had ten RP2350 chips in hand that I promised I would do something with, and I intended to make good on that.
That night I was reading the datasheet for inspiration when I came across this line.
Ok, there’s a lot there. Basically this is saying that every chip has something called the RO value (more on what this actually is later). The higher that value, the faster the chip can go. How fast? We don’t know. Gotta collect more data.
Lets collect that data!
I am going to collect the RO values of a bunch of chips, see how fast they will overclock until they die, and then correlate the RO values with how fast the chip will go.
What’s an RO?
RO stands for Ring Oscillator. Ring oscillators are basically just a really simple, really innaccurate clock that lives inside your chip. They’re usually the clock source the system uses while it bootstraps itself, until it is alive enough to use a real crystal as its main clock. Depending on your application, you can sometimes continue using the RO as your main clock. This means you don’t need a crystal on your PCB, which can lower your cost. I do this all the time with the little ATMega328p boards I make.
The RO and Overclocking
The correlation between the RO and how fast you can overclock your chip is pretty simple. The faster your RO, the more you can overclock your chip. Not every chip is created equal. Transistors these days can be atoms wide, and a couple of atoms in the right place will mean your chip will perform better. Silicon Fabrication Engineers control for this as much as they can, but there is always some degree of variance on your final chips. Some will be fast, some slow, some won’t work at all.
Making a Board
In order to test chips, I need a board. I whipped this one up in KiCad.
It has a couple important things for my experiments
- Ability to use an onboard clock or feed in an external one
- On and off board power rails for powering the chip
- A 12V rail to control a fan (yes I want to try actively cooling these)
- Shunt resistors for measuring power consumption
- A spot to solder in a regular old RPi Pico 1. This will monitor the health of the 2350 and administer the test.
I ordered the boards with PCBWay (got a bunch of credit there because of Open Sauce. Thanks guys!) and they showed up a bit later
Obviously, I had to add silkscreen memes
I also had to hand assemble and reflow these, since I wasn’t about to send my extremely rare chips in to PCBWay
Upon testing the thing I quickly realized that I swizzled my USB D+ and D- pins. Fuck!
Bit of hackery solved this though.
The Experiment
I intend to break my experiments up into a couple categories:
First, I was going to test the chip using the recommended board design from Raspberry Pi. This will mimic the average user who just wants to know how fast they can clock the chip on their regular old Pico 2 board. I suspect the data from this will be the most useful.
After that though, I want to test the chip under completely ideal conditions. I’m talking external clocks, externally power rails with VSense, heatsinks and fans, and sanding down the chip’s epoxy for better themal conductivity. How far can this chip go!?
That’s where I am now. Writing the code. Will update more later
:wq