Another important point: the .pcf file that's in ./examples/common assigns all PMOD pins to a single PMOD vector that looks like PMOD[55:0] in the chip.v.

This doesn't work if you want to use inferred IOs and, at the same time, have some PMOD signals input and some output: you can't declare the PMOD vector inout (because Yosys will croak), and you can't define part of the vector input and part of it output.

So for the uart_loopback example, I was forced to use a custom .pcf file instead.

Ultimately, I personally don't like a .pcf file with generic names like PMOD-this, PMOD-that. I prefer to use the actual functional name in the chip.v and the .pcf (UART_TX, UART_RX), and just mention which PMOD it's connected to in the .pcf comments. That way, the chip.v doesn't have these meaningless names that aren't scalable if you wanted to use your code on a different FPGA board.

So I can use more than one name/label for a pin, the --warn-no-port just stops Arachne-pnr complaining if I don't actually use this in my Verilog, this can be used with any set_io Clifford added it for generic board file definitions, we should move to this in our PCF.

So I can use more than one name/label for a pin, the --warn-no-port just stops Arachne-pnr complaining if I don't actually use this in my Verilog, this can be used with any set_io Clifford added it for generic board file definitions, we should move to this in our PCF.

I haven't tried it yet, but according to the arachne source code, "--warn-no-port" is now a NOP. It has been replaced by "-nowarn". This was apparently changed 2 months ago.

The good news: there is also a "-pullup yes|no" option, so that should answer the original question.

Other than -nowarn and -pullup, I don't see any other options for the "set_io" command in the .pcf parser. I also don't see any command other than "set_io".

One of the reasons I asked the question is that I am doing more work on the examples from the Simon Monk book, and they use pcf files that were generated by @electrified from Icecube2. It used the set_io_ff command and the -pullup option on set_io. I think set_io_ff gave errors (possibly by leaving the name undefined). So it seems I should get rid of set_io_ff commands but leave the -pullup option.