Closed maleadt closed 2 years ago
Hi @maleadt,
strange, this is a feature that is used on various designs and has been validated. I'll do a test with the XTRX.
I just did a verification on an SQRL Acorn and get the expected DNA:
With Vivado:
With LiteX/LitePCIe:
Since the issues does not seem to be seen with other XTRX, this would need to be investigated on the XTRX integration and see if there is something specific.
The DNA is wrong on the other XTRXs as well, we only thought that the wrong values were still unique so that we could use them as serial numbers (even though they differ from DNA_PORT). Turns out that's not the case as well, and they seem to sometimes change across reboots.
So I think we should re-open this?
And just to confirm that what I reported above with the TCL script is correct, I also checked the GUI:
vs. litepcie_util info
now on latest LiteX:
$ ./litepcie-user-library/litepcie_util info
[> FPGA/SoC Information:
------------------------
FPGA Identifier: LiteX SoC on Fairwaves XTRX 2022-08-31 22:01:10.
FPGA DNA: 0x00c01c1c1cf00f0f
FPGA Temperature: 61.5 °C
FPGA VCC-INT: 0.93 V
FPGA VCC-AUX: 1.77 V
FPGA VCC-BRAM: 0.93 V
As you can see, the DNA reported here is different from what I reported earlier (0x01c01c1c1df01f1f). Or is that because the DNA is only 56 bits, so the upper couple of ones are bogus and should be masked out? In that case litepcie_util
probably shouldn't print them.
@maleadt: I'll do a test on the XTRX and try to fix if I also see the issue.
Confirmed that https://github.com/enjoy-digital/litex/commit/b24d744f8ed553c023e6ab54e05d237de3dadbb7 fixes this.
I'm trying to use the Xilinx DNA (device identifier) to differentiate between devices, but it seems like the value as read by
litepcue_util
is wrong. After adding an DNA instance to my build:I'm seeing:
That already looks suspiciously regular for an identifier, and indeed Vivado (using the
get_dna.tcl
script I found here) reports something different:This is on an XTRX SDR which contains an Artix 7.
Some sources also say I should be using FUSE_DNA (64 bits) instead of DNA_PORT (57 bits, may be shared across devices), but I'm not sure how to access that from Verilog. Naively substituting DNA_PORT with FUSE_DNA in dma.py (and adjusting the size) doesn't work.