I have made a System on Module (SoM) based on Imx6q SoC with 4 GB RAM and 32 GB eMMC storage. The SoM is a double sided PCB with almost exactly same component placement, PCB stack up and routing typologies (DDR3 & eMMC routing is exactly the same) as that of the sabresd eval board. Even the components used for the assembly are the same as that of eval board.
The problem that I am facing is the yield. When 10 numbers of prototype board are assembled, 7 of them have passed and 3 have failed to load the Android 7 OS. I had done the DDR stress test which it passes but it fails to load the bootloader.
Even with this yield, we had tried to get 100 boards assembled out of which 27 had failed (Bottloader is not).
In all of the boards, the PMIC output voltages are correct and the soldering is checked & verified with AOI & XRAY machines. I randomly started to heat the SoC with a hot air blower and then tried flashing the OS, and surprisingly it flashed the Android OS. This trick worked every time (I tried flashing the Android OS 10 times and more, while the PCB is around 40 to 50 degrees, and it always flashed). However, as you may expect, these SoM fails to boot after a while and does not flash the Android OS when tried again.
I am trying to find the root cause for this problem and any guidance would be greatly helpful.