AXI System ID

?axi_sysid IP-XACT not found.Generate it and the documentation:(cd library/axi_sysid; make)(cd docs; make html)

The System ID solution is comprised of 2 IP cores: the AXI System ID which provides the AXI Lite interface and System ID ROM which acts as a ROM and contains the data. Together, they provide the user with information regarding the conditions in which the hardware system was built. The System ID information is used to provide information about the system’s bit file, to facilitate future debugging actions. This information will be stored internally in a ROM and will be made available to the system via the AXI Lite interface.

Files

Name

Description

library/axi_sysid/axi_sysid.v

Verilog source for the peripheral.

Block Diagram

AXI System ID block diagram

Configuration Parameters

AXI System ID

Name

Description

ROM_WIDTH

ROM width.

ROM_ADDR_BITS

Number of address bits.

System ID ROM

Name

Description

ROM_WIDTH

ROM width.

ROM_ADDR_BITS

Number of address bits.

PATH_TO_FILE

Location of ROM init file.

Interface

AXI System ID

Name

Description

sys_rom_data

Data input from System ROM.

pr_rom_data

Data input from PR ROM.

rom_addr

ROM address output.

s_axi

AXI Slave Memory Map interface.

System ID ROM

Name

Description

clk

Input clock.

rom_addr

Address input.

rom_data

Data output.

Clocking

The IP core runs on the AXI clock and requires a frequency of 100MHz.

Register Map

Address

Reg Name

HDL

DWORD

BITS

Field Name

Type

Default Value

Description

0x0 0x0 VERSION

Version of the peripheral. Follows semantic versioning. Current version 1.1.61.

[31:16] VERSION_MAJOR RO 0x0001

[15:8] VERSION_MINOR RO 0x00

[7:0] VERSION_PATCH RO 0x61

0x1 0x4 PERIPHERAL_ID

[31:0] PERIPHERAL_ID RO ID

Value of the ID configuration parameter.

0x2 0x8 SCRATCH

[31:0] SCRATCH RW 0x00000000

Scratch register useful for debug.

0x3 0xc IDENTIFICATION

[31:0] IDENTIFICATION RO 0x53594944

Peripheral identification (‘S’, ‘Y’, ‘I’, ‘D’).

0x200 0x800 SYSROM_START

[31:0] SYSROM_START RO

Start of register space for System ROM. Initialized at synthesis.

0x400 0x1000 PRROM_START

[31:0] SYSROM_START RO

Start of register space for partial reconfiguration block ROM. Initialized at synthesis.

Access Type

Name

Description

RO

Read-only

Reads will return the current register value. Writes have no effect.

RW

Read-write

Reads will return the current register value. Writes will change the current register value.

Theory of Operation

The System ID consists of a system of 2 or more IP cores where one provides access to the AXI Lite interface, and the other behaves as a ROM. There can be more than one ROM IP cores if required. The information contained by the ROM will be generated and written at synthesis and will provide details as revealed further in this document.

Once written, these contents cannot be changed, only read. These ROMs will be 32 bits wide with a fixed length of 512 lines for the System ROM (2KiB). The secondary PR ROM will generally be smaller.

Data Format

Common Header

Field size

Field

Value

Data format

4B *

Common Header Format Version

31:16 - reserved, write as 0000h ; 15:0 - format version number

hex

4B *

Internal Use Area Starting Offset

00000000h indicates that this area is not present

hex

4B *

Board Area Starting Offset

00000000h indicates that this area is not present

hex

4B *

Product Info Area Starting Offset

00000000h indicates that this area is not present

hex

4B *

System Custom String Area Starting Offset

00000000h indicates that this area is not present

hex

4B

PR custom string area (ROM2)

00000000h indicates that this area is not present

hex

9 x 4B

Padding

00000000h

hex

4B *

Checksum

hex

Internal Use Area

Field size

Field

Data format

28B *

Git branch

hex

44B *

Git tag (sha)

hex

4B *

Git clean check

hex

4B *

Vadj check

hex

12B *

Build date/time as seconds since 1970-01-01_00:00:00 (UTC)

hex

4B *

Padding (00000000h)

hex

4B *

Checksum

hex

* = These fields are MANDATORY

Common Header: The Common Header is mandatory for all System ID Information Device implementations. It holds version information for the overall information format specification and offsets to the other information areas. The other areas may or may not be present based on the application of the device. A field is specified as ‘Null’ or ‘not present’ when the Common Header has a value of 00h for the starting offset for that area.

Common Header Format Version: This area version information regarding the Common Header.

Internal Use Area: This area contains information describing the circumstances in which the project was built.

Product Info Area: Contains the name of the targeted product. Data converted from ASCII to hex. Size: Variable, 32 Bytes default.

System Custom String: Character string written by the user. Data converted from ASCII to hex. Size: Variable, 32 Bytes default.

Board Info Area: This area provides the name of the platform that the project is targeting. Data converted from ASCII to hex. Size: 32 Bytes.

System Custom String Area: This area provides a region where a custom string supplied by the user will be written to. This will be stored in ROM1, inside the system bit. Data converted from ASCII to hex. Size: Variable, 32 Bytes default.

PR Custom String Area: This area provides a region where a custom string provided by the user will be written to. This will be stored in ROM2, inside the PR bit where available. Data converted from ASCII to hex.

Working with the Core

The System ID solution is automatically placed into a project by the Tcl code ADI uses to build projects. It is instantiated in two stages, first in the “Common” bd.tcl of each of the supported FPGA boards and second in the system_bd.tcl of each project.

The information written to the System ID ROM(s) is obtained from Vivado in the early stages of project building. It is at this point that the user can choose the information that will be written to the “Custom String” areas.

set sys_cstring "sys rom custom string placeholder"
sysid_gen_sys_init_file $sys_cstring

Software Support

References