@User: Importantly, the GDS of caravel has prefixed a lot of libraries to avoid naming conflicts when it is pulling in a whole GDS library for which it knows nothing about the contents. The LVS only attempts to match subcells with the same name in both netlists, so the prefixing undermines that. To force matching between the prefixed cells from the layout and the non-prefixed cells in the verilog-derived netlist, the setup script for netgen has to specifically declare the matching between these cells. I did not try to do this automatically but I made a dump of names in the GDS file and hard-coded all the prefixes used there into the python script. Note that prior to a fix I made late in the game, the prefixing was utterly non-randomized because the random seed initialized to the same value every time on startup. That led to the first prefix always being "pk_", and so it kept running into naming conflicts and adding prefixes until I ended up with library prefixes "pk_pk_" and "pk_pk_pk_". There are some other weirdnesses that I have since fixed that should go away for the next tapeout.