errors · bitdewfpga bit, the XDC check before place and route (nextpnr alone prints the raw line below, with no file:line)

blink.xdc:5: ERROR [no-such-pin]: ZZ99 is not an I/O pin of the Basys3's chip (xc7a35tcpg236; a pin is a letter and a number, in capitals: W5, U16, V17), so clk would have no pin and nextpnr would stop here. Fix: write the pin clk is wired to on this line (the course's Basys3_Master.xdc puts clk on W5): copy its line from Basys3_Master.xdc, or take the pin from the board's schematic.

Two texts: a pin the chip does not have, and a pin written in small letters (nextpnr reads W5, not w5):

blink.xdc:5: ERROR [no-such-pin]: ZZ99 is not an I/O pin of the Basys3's chip (xc7a35tcpg236; a pin is a letter and a number, in capitals: W5, U16, V17), so clk would have no pin and nextpnr would stop here. Fix: write the pin clk is wired to on this line (the course's Basys3_Master.xdc puts clk on W5): copy its line from Basys3_Master.xdc, or take the pin from the board's schematic. https://nosey-dewdrop.github.io/dewfpga/errors/no-such-pin/
blink.xdc:5: ERROR [no-such-pin]: w5 is written in small letters, and the chip's pin names are capitals (W5): nextpnr reads w5 as a pin the chip does not have, so clk would have no pin. Fix: write  PACKAGE_PIN W5  on this line. https://nosey-dewdrop.github.io/dewfpga/errors/no-such-pin/

nextpnr alone stopped with this line, with no file and no line number, and the previous blink.bit stayed in the folder as if it were the result:

ERROR: Unable to constrain IO 'clk', device does not have a pin named 'ZZ99'

Why does it happen?

The chip on the Basys3 (XC7A35T in the CPG236 package) has 236 pins, 106 of them I/O, each named by a letter and a number (W5, U16, V17). The XDC gives each port one of them. A name that is not on the chip, a pin copied from another board's file, a power pin, or w5 in small letters is a pin nextpnr cannot find. Before this check, nextpnr's line was all there was, and the build that stopped there left yesterday's bitstream next to the sources.

The check reads the chip's pin list from the prjxray database the bitstream itself is built from (package_pins.csv of xc7a35tcpg236-1), so a pin it accepts is a pin the chain can place.

What is the fix?

Copy the port's line from the course's Basys3_Master.xdc; its pins are the board's wiring:

set_property -dict { PACKAGE_PIN W5   IOSTANDARD LVCMOS33 } [get_ports clk]

For a pin written in small letters, write it in capitals. A failed build leaves no .bit, .fasm or .frames behind, so dewfpga flash after it builds again and stops at the same line; it never programs the old design.

Which command prints it?