Hm, also zu "BITSTREAM.CONFIG.UNUSEDPIN" steht in der UG 908:
"Adds a pull-up, a pull-down, or neither to unused SelectIO™ pins (IOBs). It has no effect on dedicated configuration pins."
Nicht alle Pin's an einem FPGA sind Select-IO Pins. Welche, das steht im Package file ( https://www.amd.com/en/developer/resources/adaptive-socs-and-fpgas/package-pinout-files.html ), das sollten die mit "HD" oder "HP" bezeichnete sein. Auszug:
1 |
|
2 |
Pin Pin Name Memory Byte Group Bank I/O Type Super Logic Region
|
3 |
U12 DXN NA NA NA NA
|
4 |
U13 DXP NA NA NA NA
|
5 |
P13 GNDADC NA NA NA NA
|
6 |
W7 POR_OVERRIDE NA NA NA NA
|
7 |
U7 PUDC_B NA 0 CONFIG NA
|
8 |
P12 VCCADC NA NA NA NA
|
9 |
T12 VN NA NA NA NA
|
10 |
R13 VP NA NA NA NA
|
11 |
R12 VREFN NA NA NA NA
|
12 |
T13 VREFP NA NA NA NA
|
13 |
L13 IO_L12N_AD0N_46 NA 46 HD NA
|
14 |
L14 IO_L12P_AD0P_46 NA 46 HD NA
|
15 |
J14 IO_L11N_AD1N_46 NA 46 HD NA
|
16 |
K14 IO_L11P_AD1P_46 NA 46 HD NA
|
17 |
H13 IO_L10N_AD2N_46 NA 46 HD NA
|
18 |
H14 IO_L10P_AD2P_46 NA 46 HD NA
|
19 |
G14 IO_L9N_AD3N_46 NA 46 HD NA
|
20 |
G15 IO_L9P_AD3P_46 NA 46 HD NA
|
21 |
E15 IO_L8N_HDGC_AD4N_46 NA 46 HD NA
|
22 |
F15 IO_L8P_HDGC_AD4P_46 NA 46 HD NA
|
23 |
F13 IO_L7N_HDGC_AD5N_46 NA 46 HD NA
|
24 |
G13 IO_L7P_HDGC_AD5P_46 NA 46 HD NA
|
25 |
E13 IO_L6N_HDGC_AD6N_46 NA 46 HD NA
|
26 |
E14 IO_L6P_HDGC_AD6P_46 NA 46 HD NA
|
27 |
D14 IO_L5N_HDGC_AD7N_46 NA 46 HD NA
|
28 |
D15 IO_L5P_HDGC_AD7P_46 NA 46 HD NA
|
29 |
C13 IO_L4N_AD8N_46 NA 46 HD NA
|
30 |
C14 IO_L4P_AD8P_46 NA 46 HD NA
|
31 |
A13 IO_L3N_AD9N_46 NA 46 HD NA
|
32 |
B13 IO_L3P_AD9P_46 NA 46 HD NA
|
33 |
A14 IO_L2N_AD10N_46 NA 46 HD NA
|
34 |
B14 IO_L2P_AD10P_46 NA 46 HD NA
|
35 |
A15 IO_L1N_AD11N_46 NA 46 HD NA
|
36 |
B15 IO_L1P_AD11P_46 NA 46 HD NA
|
37 |
C12 IO_L12N_AD8N_45 NA 45 HD NA
|
38 |
D12 IO_L12P_AD8P_45 NA 45 HD NA
|
Eine ganze Menge Pins zählt nicht zu den Select-IO Pins, vielleicht ist ja eines "deiner" unused pins, ein solches. MGT-Pins beispielsweise oder die aus dem PS-Bereich. Denn kann man natürlich mit dem IO-Report vergleichen, das kann man mit einem kleinen script erledigen.
Manchmal kann man auch aus dem PCB-design per scripte eine Liste der nicht an einem elektrischen Netz angeschlossenen Symbol-pins erhalten - das erleichtert dann etwas die Arbeit.
Wenn ich mir nach der Implementierung allerdings den IO Report ansehe
(report_io -file "IO.txt"),
Eventuell generierst du hier den report für ein Zwischenprodukt in dem die Info noch nicht drin ist. Welches "Zwischenprodukt benutzt wird, bestimmt IMHO das open_checkpoint o.ä. command das vorher ausgeführt wurde.
Und wenn ich mich recht erinnere, wird bitgen erst nach der Implementierung ausgeführt, deine Directive "BITSTREAM.*" könnte also an diesem report keine Wirkung zeigen. Vielleicht im tcl scipt (oder bei online scripting in der tcl-shell) vor dem report_io das für bitgen passende tcl-command (write_bistream) laufen lassen. Ich seh grad write_bistream hat eine optionale -verbose option. https://www.xilinx.com/support/documents/sw_manuals/xilinx2022_1/ug835-vivado-tcl-commands.pdf S. 1860 (kein Tippfehler, das dokument hat tatsächlich knapp zweitausend Seiten).
Nach meiner Ansicht und auch gemäß vieler Vorschriften im Bereich
sicherheitskritischer Schaltungen müssen alle Pins eines Chips
vollständig funktionell beschrieben / programmiert sein.
Sehe ich genauso, jedes Pin muss explizit konfiguriert sein und die Konfiguration an den logs überprüft sein. Sonst schlägt unerbittlich Murpphy's Gesetz zu, "Was schief gehen kann, wird schief gehen".