I am using a 5k pullup resistor on my SDA and SCL lines. I am using a 62kHz clock signal on SCL. I have made two boards so far. For the first board I routed all the traces myself, but for the second I used the auto-router feature in Eagle. I routed the important traces myself, but for everything else, including SCL and SDA, I left things up to the auto-router.
From the logic capture, it appears that the communication still works on the second board. However the analog levels tell a different story.
Moreover, after running this test program on my microcontroller (PIC16LF), the program goes into a bad state. What I mean by this is that the I2C lines begin to float, and the clock signal becomes "stretched". I also have a debug LED that toggles with a certain event, and the pin the controls that LED seems to let go, as the LED flickers in a somewhat random way.
My questions are therefore:
1) Is this in fact caused by the layout?
2) What would cause the program to go into a bad state?
To give an idea of how bad the SDA trace looks, here is a screenshot of the the layout: