Following registers would provide a unique ID for every PSoC 3 device (Refer to PSoC 3 Registers TRM):
FLSHID_CUST_TABLES_Y_LOC (0xC0100) - Y coordinate in Wafer
FLSHID_CUST_TABLES_X_LOC (0xC0101) - X coordinate in Wafer
FLSHID_CUST_TABLES_WAFER_NUM (0xC0102) - Wafer No
FLSHID_CUST_TABLES_LOT_LSB: 0xC0103 - LOT number (LSB)
FLSHID_CUST_TABLES_LOT_MSB: 0xC0104 - LOT number (MSB)
FLSHID_CUST_TABLES_WRK_WK: 0xC0105 - Work Week of Manufacturing
FLSHID_CUST_TABLES_FAB_YR: 0xC0106 - Fab ID & Year of Manufacturing.
But the only drawback of this is that "Year of Manufacturing" parameter is only from 0 to 9. So a chip manufactured on 2013 and 2023 will have the same year number.
why not come at it from another direction?
there are several manufacturers of memory products that include an inexpensive MAC address chip in the product line. This will give you an 48 bit globally unique ID. I don't want to mention names/products since that may be against forum rules.
some come as small as TO-92 and SOT-223 with differing interfaces from 1-Wire, SCIO, I2C, SPI.
pricing, in modest quantities, can be as low as 30 cents US.
google "MAC address memory chip" if you want more info.
i've used several in past products that did not have an ethernet controller. with some ethernet controller capable MCUs they come along in the product so i haven't used them in several years.