Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
21602 Discussions

What does Altera call their version of Xilinx DNA?

Altera_Forum
Honored Contributor II
2,852 Views

Hi, 

 

Xilinx chips have a feature that xilinx calls "chip DNA" where there is an array of laser fuses on each chip and Xilinx blows out a unique fuse pattern on each die before it is shipped. This gives a useful unique identifier for each chip. It's helpful in lots of situations, such as deployment without a configuration memory (i.e. fpga gets programmed over JTAG or by some off-board device) in which to store a serial number -- you can read back Xilinx's DNA number and use it to derive your product's serial number. 

 

I think the name "DNA" is a bit silly, but that's what they call it. 

 

What does Altera call this feature? I haven't been able to find the documentation for it because I don't know what it's called. Specifically interested in Cyclone III. 

 

Thanks! 

 

Edit: thanks again to dwh for getting me pointed in the right direction; "the answer is: the altchip_id primitive".
0 Kudos
4 Replies
Altera_Forum
Honored Contributor II
2,086 Views

I Googled "altera unique serial number" (yeah, I know, you are kicking yourself for not doing that ...) 

 

You are looking for the "Altera Unique Chip ID IP Core User Guide". 

 

https://www.altera.com/support/literature/lit-ug.html 

 

https://www.altera.com/content/dam/altera-www/global/en_us/pdfs/literature/ug/altchipid.pdf 

 

Briefly scanning the User Guide, it does not tell you which devices are suppored. 

 

I started Quartus, made the IP Catalog visible, typed 'unique' in the search bar, doubled-clicked on the IP, and found that it does not have a device type pull-down.  

 

So I created a Quartus project, but then realized that 15.0 does not support the Cyclone III ... so I tried with a Cyclone IV ... and the Unique ID core was greyed out. 

 

I suspect that this IP core is not supported with the Cyclone III. A work-around would be to create a read-only register. The downside to that solution is that you need to re-synthesize for each device. If you have an EPCS device on your board, some of those types of devices (SPI flash) have unique ID codes or OTP EEPROM (eg., I think some of the Spansion or Numonyx/Micron parts do). If you have a MAX II or V device, you can use the UFM to program a unique serial number. 

 

Just a few ideas ... 

 

Cheers, 

Dave
0 Kudos
Altera_Forum
Honored Contributor II
2,085 Views

 

--- Quote Start ---  

 

I Googled "altera unique serial number" (yeah, I know, you are kicking yourself for not doing that ...) 

 

--- Quote End ---  

 

 

Actually I did... with that search google gave me (and still gives me) a bunch of links for illegal quartus warez serial number cracks.... and a few links related to MAC addresses for people running linux on NIOS. 

 

 

--- Quote Start ---  

 

You are looking for the "Altera Unique Chip ID IP Core User Guide". 

 

--- Quote End ---  

 

 

Thanks. I have to say it is very unhelpful that they plaster the acronym "IP" all over this. It's a hardware feature I'm looking for, not IP. 

 

 

--- Quote Start ---  

 

I started Quartus, made the IP Catalog visible, 

 

--- Quote End ---  

 

 

An IP catalog is (and continues to be) the very last place I would look for documentation about a hardware feature. 

 

If Altera is sticking documentation about their device's hardware properties under something titled "IP", then they are just completely bonkers. 

 

 

--- Quote Start ---  

 

I suspect that this IP core is not supported with the Cyclone III. 

 

--- Quote End ---  

 

 

Thanks, but I don't really care about IP cores, I want to know if the device physically has die-unique fuses blown out at the foundry. It's a pretty clear-cut answer; they have to put it through a whole extra far-back-end step at UMC. Either they did or didn't do that. 

 

 

--- Quote Start ---  

 

A work-around would be to create a read-only register. The downside to that solution is that you need to re-synthesize for each device. 

 

--- Quote End ---  

 

 

As explained earlier, that is not an option here. The product on which the Cyclone is deployed has no nonvolatile storage of any kind.
0 Kudos
Altera_Forum
Honored Contributor II
2,086 Views

Thanks again to dwh for getting me pointed in the right direction. 

 

If I had to answer my own question, succinctly, I would say "the answer is: the altchip_id primitive". 

 

Altera calls their primitives "megafunctions" for some reason.... someday I will launch a competing FPGA company and crush them with my gigafunctions and yottafunctions.
0 Kudos
Altera_Forum
Honored Contributor II
2,086 Views

The link to the user guide I provided above should have contained the name of the IP component, i.e., ALTCHIP_ID. Sorry my response was not as clear as it could have been. After you've been using the tools for a while you get lost in the jargon and terminology and forget that it is unique and often completely bonkers :) 

 

Were you able to test it on the Cyclone III? 

 

Even if Altera has blown some serial fuses on the device, if they do not allow Quartus to implement an ALTCHIP_ID primitive then you're out of luck. 

 

The Cyclone III does have a JTAG USER code that you can program ... and I think you can change it without having to resynthesize. But that would only help if you had a processor or something connected to the JTAG chain to read out that ID. 

 

I suspect that most users that decide they need a unique ID simply use the configuration source, eg, EPCS flash, to store board-specific information. 

 

What is the configuration source for your particular hardware? Perhaps it could be used? 

 

Cheers, 

Dave
0 Kudos
Reply