Database schema
The device database is provided in machine-readable form as a JSON file:
xpla3.json, describing all XPLA3 devices
Top level
The top level of the database is an object, with the following fields:
devices
(list of object): list of devicebonds
(list of object): list of bondspeeds
(list of object): list of speedparts
(list of object): list of partmc_bits
(object): a tile describing per-MC bitsfb_bits
(object): a tile describing per-FB bitsjed_fb_bits
(array): a jed bits list describing per-FB bitsjed_mc_bits_iob
(array) a jed bits list describing per-MC bits for MCs with IOBsjed_mc_bits_buried
(array) a jed bits list describing per-MC bits for MCs without IOBs
Device
A device is a structure describing a particular device die. A device is referenced from a part. A device is an object with the following fields:
idcode_part
(number): bit 12-27 of the JTAG IDCODE of the device, with low 3 bits (package type) masked to 0bs_cols
(number): bitstream width in columnsimux_width
(number): width of the IMUX bitstream area in columns (and also the size of a single IMUX selector in bits)fb_rows
(number): the number of FB rowsfb_cols
(array of object): list of FB columns; each item is an object with the following fields:pt_col
(number): first column of the PT area in bitstreamimux_col
(number): first column of the IMUX area in bitstreammc_col
(number): first column of the MC/FB area in bitstream
io_mcs
(array of number): list of MC ids that have IOBs; the list is the same across all FBs, and the list stores only MC indicesio_special
(map from string to pair of numbers): describes the I/O pads with special functions on the device. The keys can be:"TCK"
"TMS"
"TDI"
"TDO"
The values are two-element lists of numbers. The first number is FB index, and the second is MC index.
imux_bits
(object) : a tile describing per-FB bits corresponding to IMUXglobal_bits
(object) : a tile describing global bitsjed_global_bits
(array): a jed bits list describing global bits
Bond
A bond is a structure describing the mapping of device pads to package pins. Bonds are referenced from part packages. A bond is an object with the following fields:
idcode_part
(number): bit 12-27 of the JTAG IDCODE of the devicepins
(map from string to string): the pins of the package; they keys are package pin names, and the values are:NC
: unconnected pinGND
,VCC
: power and ground pinsIOB_{fb}_{mc}
: an I/O pinGCLK{i}
: dedicated clock input pinsPORT_EN
: JTAG enable pin
Speed
A speed is a structure describing the timings of a device. They are referenced from part speed grades. A speed is an object with one field:
timing
(map of string to number): a map from timing parameter name to timing data. All timing data is given in picoseconds, and is always an integer number.
Part
A part is a structure describing a particular commercially available part number. Several parts may correspond to the same device. A part is an object with the following fields:
name
(string): the base name of the part, in lowercasedevice
(number): the index of the corresponding device in thedevices
field of the databasepackages
(map from string to int): the packages in which this part is available; the key is package name, and the value is the index of the corresponding bond in thebonds
database fieldspeeds
(map from string to int): the speed grades in which this part is available; the key is speed grade name (including the leading-
), and the value is the index of the corresponding speed in thespeeds
database field
Tile
A tile is a structure describing a set of device fuses.
A tile is an object where the keys are fuse set names, and the values are objects with the following keys:
bits
(list of coordinate): the list of fuse coordinates in this fuse set; a single coordinate is an array of three numbers, in order:fuse row
fuse plane
fuse column
Depending on the tile, the coordinates may be either absolute or relative to some base.
one of:
values
(map of string to list of bool): used for an enumerated fuse set; the list of possible values for this fuse set; the value is a list of fuse values, corresponding one to one to the coordinates inbits
invert
(bool): used for a plain bool / bitvec fuse set; if true, it means that the value of this bitvec or bool is stored inverted in the datastream (0 means true, 1 means false); if false, the value is stored directly without inversion
JED bits
A JED bits list is a structure describing a part of the JED file layout. It is represented as an array, with each item describing one fuse, in JED file order. Each item of the array is itself an array of two items:
item 0 (string): fuse set name, referencing an item in the associated tile
item 1 (number): fuse index within fuse set