I have seen this before, and if I recall correctly, it is caused by something in the layout that is extending out of bounds; if that happens on a non-physical mask layer, then it may escape being seen by the XOR check but get caught by the fill generator. The XOR is the only check for out-of-bounds data. The fill generation script used for precheck should be changed so that it always clips to the bounding box of the Caravel chip. I think the fill generation script being used is just the one I wrote for the PDK, which is supposed to be general-purpose and not specific to Caravel. The precheck version can be more targeted.