11 Replies Latest reply on Feb 12, 2013 6:31 PM by DaKn_263916

    Unique Die Serial Number


      There is a recurring problem in customer base, need for a unique silicon die


      ID for each chip. This is not a Device ID, as currently implemented. Something


      akin to this








      Would it be possible to implement thru programmer ? All PSOC Families ? Auto generated, say off a tax number, GPS


      coordinates, or IP group number, something unique to the customer. Even a Cypress seed for those who are consultants,


      the generated serial # stored in FLASH or EEPROM, and then protected as read only during programming.




      Regards, Dana.

        • 1. Re: Unique Die Serial Number



          PSoC3 and 5 do have a kind of die number. It's called PseudoID and it reflects the die date, number and x and y position. It's unique for each part however there's no 100% guarantee.




          For PSoC1 there's no unique number. 




          I've made software to program PSoC with an unique serial number for production.




          i'll give you more details as soon as I am home (mobile atm)







          • 2. Re: Unique Die Serial Number

            x and y position sounds like the coordinates of the die on the wafer ?


            If so definitely would not be unique, wafer to wafer, same production


            fab day.




            I look forward to your post on how you did this.




            Regards, Dana.

            • 3. Re: Unique Die Serial Number

               Hi Dana,




              There are 8 bytes stored at the so called "Customer Tables" which might be of your interest. The Customer Tables are located in flash area at 0x000C0100u, consists of 64 bytes and are written during manufacturing time. The first 8 bytes belongs to the Pseudo Unique ID.




              Please have a look at page 1639 of the PSoC® 3 Registers TRM: http://www.cypress.com/?rID=37833




              0x000C0100u - Y location of die on the wafer (row number)


              0x000C0101u - X location of die on the wafer (column number)


              0x000C0102u - Wafer Number: 1 to 24


              0x000C0103u - LSB of lot number/wafer start


              0x000C0104u - MSB of lot number/wafer start


              0x000C0105u - Work week: 1 to 53


              0x000C0106u - [7:4] Fab Number: 4 or 5 & [3:0] Year: 0 to 9


              0x000C0107u - Marketing part number - minor: 000 to 999




              Be aware of the fact that the year can roll over from 9 to 0 and that there's no testing done if these values are correct programmed. So this number is not guaranteed to be unique.




              Also have a look at your "cydevice.c" in your project, these locations are already defined:


              #define CYDEV_FLSHID_CUST_TABLES_Y_LOC 0x000c0100u






              To read these values within your firmware, you can just use the following:


              unsigned char   ID_Y_LOC = CY_GET_XTND_REG8( (void far *) CYDEV_FLSHID_CUST_TABLES_Y_LOC);




              To read these values from MiniProg3, you have to use the PP-COM component and do the following:


              - Aquire the PSoC


              - Read Wafer ID from customer tables


                          pp.swdiow(0x4720, 0xB6);    // First initiation key


                          pp.swdiow(0x4720, 0xDD);    // READ_HIDDEN_ROW opcode


                          pp.swdiow(0x4720, 0x0A);    // READ_HIDDEN_ROW opcode


                          pp.swdiow(0x4720, 0x00);    // Flash Array ID


                          pp.swdiow(0x4720, 0x01);    // RowID of Protection bytes row


                          byte Val; string PSoCpseudo = "";


                          ReadIO(0x4720, out Val);


                          for (int i = 0; i < 256; i++)




                              ReadIO(0x4720, out Val);


                              if (i < 8)




                                  PSoCpseudo += Val.ToString("X2");






               Hope this helps you out!




              Regards, Rolf

              • 4. Re: Unique Die Serial Number

                So it looks like, in the worst case, there will be 24 parts bearing the same ID.


                But this may be good enough for many users.




                Thanks Rolf.




                Regards, Dana.

                • 5. Re: Unique Die Serial Number

                   You're welcome!




                  Don't get how you get to 24? Anyway, the ID is not guaranteed to be unique, but for most applications it is not a problem. I use the Pseudo ID in an application where multiple PSoCs are communicating over a single bus and it works great!




                  For PSoC1 I use the PP_COM library with a custom made application to program the unique serial number on the fly. The program loads the lastest firmware from a server and puts the number at the right place in flash.







                  • 6. Re: Unique Die Serial Number

                    24 Wafers in  a lot can have all identical x. y, and......... So 24 parts can have


                    the same ID.




                    Thanks for all the other info, very helpful to the forum.




                    Regards, Dana.

                    • 7. Re: Unique Die Serial Number





                      I don't know if the X and Y values range fully from 0-255. Probably there will fit less dies on one wafer.


                      Also when a new lot starts, the wafer number can be starting from 0 again, In the end, there will be as much identical x/y values as the total amount of wafers, and I guess there will be a lot wafers produced.




                      If you need a 16 bit value, maybe it's better to make two groups of 4 bytes and XOR those 4 bytes together to get 2x 1byte.


                      And to get an even more variation, you'd better use an 16 bit LFSR and shift all the 64 bits in!







                      • 8. Re: Unique Die Serial Number

                        In a 24 wafer lot, each wafer will have N number of die. This varies wafer to wafer,


                        due to mask alignment. I wrote a program in 70's, FORTRAN, for a given die geometry


                        and scribe channel spacing, what min and max number of full die will be achieved. As


                        die size increased, the range narrowed as one would expect. The corollary is true as well.




                        Range of X, Y irrelevant in a sense, as each wafer has N die, therefore have N X,Y pairs,


                        therefore in a lot of W wafers there will be W die carrying the same X,Y pairing.




                        Regards, Dana.

                        • 9. Re: Unique Die Serial Number

                          Hi Rolf, I am using a PSoC1 and need to program unique IDs as I am using them in a wireless remote control application.  Can you share with me how I can do it please?  Thanks, Ron

                          • 10. Re: Unique Die Serial Number

                            Hi Ron,


                              I have the same problem. Did you find the answer to it?





                            • 11. Re: Unique Die Serial Number

                              Update for other people who were also looking for a solution - the function CyGetUniqueId is now implemented in CyBoot. I upgraded from PSocCreator 3.1SP2 to PSocCreator 3.3


                              More information : PSoc3/5LP System Reference Guide. There is nothing mentioned in this document about being a real unique number or a pseudo-unique number as discussed in this thread.