To sum up: DAC7578 is responding on the wrong address and appears to be doing so independent of what the address pins are pulled to. This happening to only a subset of boards and has been fixed by replacing the DAC. I'm looking for some sort of smoking gun or possible root cause, possibly some sort of advice for our contract manufacturer if this related to assembly/handling.
I've built ~100 boards with the schematic/layout detailed below and on a large potion of them DAC7578 behaves as expected, however on a subset of them (~10) it appears to just not respond on I2C. Continuity checks on I2C data/clock show a good connection, visual and xray inspection of the parts show no skew or shorts.
While troubleshooting I decided to try all of the possible addresses that the DAC could be on and I found that the part was responding on the wrong address! The expected address with Addr0 = 0 and Addr1 = float would be 0x4C, on 3 different failed boards I was getting a response on 0x4A instead. This is an address which would be consistent with Addr = 0 and Addr1 = 1.
This is in a test setup where the only I2C device on the bus is DAC7578 and I am using a telos XL2.0 I2C debugger. I am sending a 123 into the 6th channel buffer and then attempting to read back that buffer, 0x4C NAKs, but 0x4A gives the correct response.
The next thing I checked was what would happen if I pulled down Addr1, in case there was some slightly lower impedance pulling it up internally-
It should respond on 0x48 with Addr0 and Addr1 = 0. There device NAK'd and continued to communicate on 0x4A.
Here is the schematic and layout of DAC7578.
On the board layout there are no pins adjacent to Addr1 that could have bridged solder and pulled it up, every adjacent pin is GND. The via closest to it is -20V and is not bridged. As mentioned before, visually the chip appears soldered correctly with no skew.
There is no correlation with the datecode of the parts.