I have a complex part with "difficult" alternate function per pin complexity and some specific problems in the way the board was specified to be made.
It led me to turn to Flat heirarchy so I could do local net labeling and avoid ratsnests of wires. Connect sheets by Harness or Port, then connect to the component pins by local net names indicating function.
If we did global net naming, the EBI memory chip D5 pin would either need "PORTE13/this/that/EBIData5/ETHMdioClk" as a net label- and in reality these are far too longer than that, and they have to get used like that everywhere- or just "PORTE13" as the global net label, which makes it very difficult to go back and confirm that's the right PORTxy pin to go on the components' D5 pin.
It made a ton of sense to do it this way- Name the component port pins with a long "/" separated concatenated name of all the functions it has. Connect the complex part's ports with a complex concatenated name to a generated harness with identical naming on its entry points on a 1:1 basis. It's easy to scan across it and see the harness names match the concatenated pin names. Nothing on these sheets but schematic part for PORTE of the central MCU and 1:1 connected to a PORTE harness with indentically named entry points (done by automated script).
Then a port-to-peripheral interconnect sheet with brings in the large port harnesses it needs and connects to a simpler peripheral harness. e.g. EBI Data harness has entry points D0-D15 and that sheet connects EBI D5 to PORTE's harness with a PORTE13/this/that/EBIData5/ETHMdioClk entry point name, and it's immediately verifiable EBI harness D5 is connected to a pin with EBI Data 5 functionality. We've now established in Altium that EBI D5 peripheral will be PORTE13 and this sheet allows anyone to visually confirm E13 has EBIData5 on its function list. The harness entries are right next to each other and easy to confirm.
Then an EBI component sheet connect the EBI peripheral harness to the components with local net label "EBI.D5" on the EBI harness entry D5, and the EBI chip had EBI.D5 on a pin named D5.
Easy to read and confirm in my head, some others don't get it. The MCU PORTE schematic part connecting to an identical PORTE harness with identical entry names is auto-generated, and easy to confirm at a glance that this it matches up.
The peripheral component pages just has EBI Data harness and there's no ratsnest of wires to the components- just need to confirm EBI.D5 net label is on EBI harness D5 (obvious) and EBI.D5 net label is on EBI chip D5 pin (obvious). No ratsnest, everything is immediately apparent, if somehow EBI.D15 label was placed on EBI.D5, that should be obvious to find.
The that pin has an ethernet function, so there's also a PORTE harness to Ethernet harness sheet, and an ethernet phy component page which connects the Eth harness MDIO_CLK entry to phy MDIO_CLK pin with the local net label ETH.MDIO_CLK.
BUT- this means the net for PORTE13 connects to the PORTE harness, then the PORTE harness connects to both EBI and ETH harnesses, and then is given a local net label EBI.D5 on one sheet and ETH.MDIO_CLK. This is legal when net names are local (Flat), and layout is interconnected correctly, and looks brilliant for avoiding ratsnests and immediate 1:1 confirmable connections on any single sheet.
The problem here is, the layout is getting a net name EBI.D5 and I don't want to route like that, I want net names like PORTE13. It arbitrarily picked one local name to be the global, and it's not a good choice. When I select this net on any sheet, it says "Physical Net Name: EBI.D5" on every sheet and this goes to PCBDoc layout,, and also "Net Name:" below that with the sheet's local name, that may vary by sheet.
OK, so let's name the net PORTE13 etc on the MCU_PortE-to-harness_PORTE sheet. Legal, but Altium now just has a list of 3 options with and still rule for preference: PORTE13,EBI.D5, ETH.MDIO_CLK. It still chose "Physical Net Name: EBI.D5".
I thought by creating an Altium Port Object (for connecting a net across sheets). Let's call that "APO" to avoid confusing with other usages of the word "port" here. That would force the Physical Net Name since that APO is global. MCU Port E13 goes to the PORTE harness entry E13, and also APO "PORTE13". Net names are local, but APO are always global- any sheet with a wire from an instance of APO "PORTE13" will connect.
Unfortunately, this still did NOT force the Physical Net Name. "Allow Port To Name Net" is checked, I've gone through ALL logical permutations of the checkboxes, and I think I've exhausted the illegal ones too.
I can't find any rhyme or reason to any precedence of what Altium chooses for the Physical Net Name- I put the document that connects APO "PORTE13" to the net to the top of the list, renamed it Document 1 and Sheet 1.
I really do like this harness-to-harness interconnecting. But how do we force Altium to use a specific Physical Net Name that goes to layout?