The problem is that there is a "format" line for symbols, but that has no effect on the schematic, so then the schematic pins would all have to be annotated with the "sim_pinnumber" attributes. I feel like it would be a better solution if xschem understood that when a schematic has a matching symbol, then the symbol should be used to generate the port list (with an error being flagged if the symbol pins don't match the schematic pins). It really should not be possible (that is, should not be allowed) to create a different pin order for a circuit as the top-level vs. a circuit as a subcircuit in a hiearchical design, as long as a matching symbol exists for the schematic.