Effective power management is a top priority for embedded Linux devices, and while components such as power governors which select power configurations often get the most attention, an equally important consideration is: what configurations does the device actually support?
For many embedded Linux platforms, the list of supported power options is described by Operating Performance Points (OPPs) — a list of frequency and voltage pairs. Creating those OPPs requires a laborious process of hardware testing known as characterization. Characterization is usually an extremely manual task, and it’s not unusual for it to take a full day to test a single board.
When one of our customers asked us to help define the OPPs for the NXP iMX8MQ EVK, we wanted to use our expertise in building custom silicon and automating software testing to create a better solution. What we built was a device to not just monitor but control the on-die temperature of the iMX8MQ.
We’re calling that device the Thermo-regulated Power Measurement Platform (TPMP).
How Does Characterization Work?
The characterization process is a step in semiconductor manufacturing that involves testing wafers with various voltages, clock frequencies, and temperatures to see how the properties of the wafer change. The results are plotted in a shmoo plot which clearly shows the points at which the properties of the wafer deviate from the desired behavior..
One of the characterization techniques, known as a process corner, is PVT or Process, Voltage, and Temperature. Each of these variables is modified in turn during wafer testing while the other two remain constant. Process control is done at the fab and cannot be altered afterwards. Controlling voltage is fairly straightforward thanks to the wide range of hardware tools available, such as the ACME Cape, which can precisely alter the voltage supplied to the wafer. But it’s a different story for monitoring and controlling temperature.
Unlike voltage, wafer temperature is influenced by factors that are usually outside the testers control — for example, the temperature of the room where the testing is taking place. Ensuring proper testing of the PVT process corner requires precisely monitoring the temperature, and then heating or cooling the wafer using a Peltier device.
As you can image, controlling temperature on the wafer surface is a difficult problem to solve which means equipment is very expensive: paying $15,000 is not unusual. And even after spending large sums of money on the equipment, engineers still need to expend their time to manually test each point.
The Thermo-regulated Power Measurement Platform
The TPMP allows fine-grained control and measurement of the NXP iMX8MQ die temperature and it’s built using just five components:
- Peltier element
- Meerstetter TEC-1091 controller
- Heatsink temperature sensor
- Chip external temperature sensor
The TEC-1091 controls both the Peltier element and the fan to heat and cool the die and maintain a specified temperature, which the controller monitors based on feedback from the heatsink and chip external temperature sensors.
The TPMP can handle die temperatures from 12°C to 115°C, but the measured and actual die temperature differs by about 2°C for low-temperature ranges and 8°C for high-temperature ranges. This is because it’s impossible to get a temperature reading directly on the die surface due to thermal resistance. Fortunately, accounting for this delta is easy to do in software by calibrating the chip external sensor before measurement.
How quickly can the TPMP adjust the die temperature? Pretty quickly. It takes between 5 and 10 minutes to ramp from 25°C ambient to 115°C and stabilize. And to make it easier for our engineers to check the temperature, we attached an LCD display that shows a rolling display of the Peltier element temperature, the voltage, and the current supplied.
We chose Python3 when writing the software so that it can be easily integrated into an automated test framework. Using this software we can correlate the on-die temperature of the IMX8MQ with the Peltier sensor temperature, which means the TPMP can fully regulate the system and maintain a constant temperature.
You can get the software for regulating the Peltier element from here: ssh://firstname.lastname@example.org/mps/tpmp_ctrl.git. Inside you’ll find scripts to:
- Set the die temperature
- Launch tests and save the results
- Post-processing tools to analyze test results
Here’s an example of the output from running the regulation script to set the die temperature to 30℃:
In total, this project took three months to complete and cost about ten times less to build than standard off-the-shelf products. And if the huge cost savings weren’t enough, the integrated automation of the TPMP means it’s much easier to use.
Now we can wire up a board and run hundreds of test scripts to check each of the PVT variables in around two hours. When the tests are complete, we get a detailed report with all the results. If we did this manually, it would easily require a full day for each board.
Since the TPMP was so successful, our next step is to expand its use to a broader set of boards as part of our automated Linux kernel testing. To do that, we plan on integrating the TPMP software with kernelCI. Stay tuned for updates in a future blog post.