I did the following things by steps:
Firstly I load the code by: load("abXmpToLayout.ils"), it returns "t"
Then, I run: abPixMapReadFile("final.XPM"), it returns stdobj@0x14a09024, there is not other callbacks.
However, there is a warning after I load the ils file:
*WARNING* (TECH-230035): User-defined rule "minExtensionDistance" in constraint
group "foundry" of techDB "cmrf7sf" conflicts with
a built-in constraint with the same name.
You may write out "constraintGroups" section to an
ASCII file, reopen the technology database in "a"
mode, and reload the file to update the database.
Another option is to rename this rule.
This warning even shows when I start cadence virtuoso, but I will always check the Options-display-grid controls to make sure the minimum snap is correct. So I think this warning doesn't affect custom layout design. I don't know whether it will affect the parse of the Xmp file.