All UCD3138 family members have a special hidden trim flash area.
The trim flash is used to store values which are loaded into various trim registers in the peripherals.
The trim values are determined for each chip when it is tested.
They are used to compensate for process variation from chip to chip.
The regulate things like clock speed and ADC reference voltages.
Almost all of the time, the trim flash is not corrupted, and the device runs fine.
There is a trim flash checksum, and the boot ROM always checks the trim flash when the device powers up. If the trim flash checksum is valid, the trim values are copied into the trim registers and all is fine.
However, if the trim flash is invalid, the boot ROM doesn't copy the trim values into the registers. This means that the chip will not function properly. Clock speed and ADC references will not be correct. Different devices have different ways in which they handle invalid trim flash.
With the UCD3138, UCD3138A, UCD3138064, UCD3138128, UCD3138A64, and UCD3138128A, invalid trim flash is handled the same way:
Trim flash vaild - The flash program is executed and PMBusRegs.PMBCTRL1.bit.SLAVE_ADDR = 0x7f
Trim flash invalid - The flash program is executed and PMBusRegs.PMBCTRL1.bit.SLAVE_ADDR = 0x7e
This makes it possible for the program, if desired, to use the PMBus to signal that the program is invalid. Since the PMBus is clocked by the master, it should still work. The UART will probably not work.
On the UCD3138064A, if the trim flash is invalid, the boot ROM will not branch to the program flash, but will stay in ROM mode.