The device register map defines the registers and fields assigned to each device in the system.

A template file for the device register map is included in the Semiconductor Device Control Add-On installer. When you create a copy of the template map file for your system, you must adhere to the structure and format requirements for the template file. Otherwise, the register map conversion utility will not be able to use the template file to generate a register map that is compatible with the Semiconductor Device Control Add-On.

Device Register Map Structure

The device register map must adhere to a specific structure to represent the relationship between devices, registers, and fields in the system.

This map can contain information about one or more devices. Each device contains the details of the device memory map which you can divide into groups as needed. Each register defines a specific memory address in the device memory map. The fields within the register represent one or more bits that define the purpose of the register. These fields can be split across two registers within the same group.

The following list shows an example of the hierarchy structure of the device register map file, including the use of split-field registers.

  • Register Map
    • Device 1
      • Group 1
        • Register 1
          • Field 1
          • Field 2
          • Field ...
        • Register 2
          • Field 1
          • Field 3
          • Field ...
        • Register ...
          • Field 2
          • Field 3
          • Field ...
      • Group 2
        • Register ...
          • Field ...
    • Device 2
      • Register ...
        • Field ...
    • Device ...

Device Register Map Format

The device register map template CSV file defines the formatting that the register map conversion utility requires to generate a register map file that is compatible with the Semiconductor Device Control Add-On.

Each row in the CSV file represents a single instance of a field in a register. If a field is split across multiple registers in the same register group, that field will appear multiple times in the device register map.

Note Fields can be shared between registers in the same register group. All fields for the register should be defined, and none can be left undefined.
Note Do not use special characters or new line characters. These characters will break the CSV formatting of the register map. The full list of prohibited special characters is the following: ~`!@#$%^&*()[]{}-+=\?/|<>

Each column in the CSV file defines a parameter for the field, such as the register name or register address. The first row of the file indicates the parameter that you must define for the field. When the register map conversion utility uses this device register map file, it will ignore the first row of the file.

The following sections define each parameter in the template CSV file in sequential order, starting with the first column.

Device Name

Column 1 defines the name of the device that contains the register. If multiple rows use the same device name, then the register and field represented in those rows belong to the same device.

The device name is a string that must meet the following format requirements.

  • Do not use spaces. Instead, use underscores.
  • Do not begin the device name with a number.
  • Do not use special characters.
  • Each device name should be unique.

Group Name

Column 2 defines the name of the group that contains the register.

The group name is a string that must meet the following format requirements.

  • Do not use spaces. Instead, use underscores.
  • Do not begin the group name with a number.
  • Do not use special characters.
  • The name of the register group should be unique across all IP blocks.

Refer to the following table for an example of register map grouping.

Table 1. Example Register Address Map
Group Name Register Name Type Register Address
Status_Register DR_STATUS Read 0x00
Data_Registers OUT_X_MSB Read 0x01
OUT_X_LSB Read 0x02
OUT_Y_MSB Read 0x03
OUT_Y_LSB Read 0x04
OUT_Z_MSB Read 0x05
OUT_Z_LSB Read 0x06
System_Registers WHO_AM_I Read 0x07
SYSMOD Read 0x08
Offset_Registers OFF_X_MSB Read/Write 0x09
OFF_X_LSB Read/Write 0x0A
OFF_Y_MSB Read/Write 0x0B
OFF_Y_LSB Read/Write 0x0C
OFF_Z_MSB Read/Write 0x0D
OFF_Z_LSB Read/Write 0x0E
Temperature_Register DIE_TEMP Read 0x0F
Control_Registers CTRL_REG1 Read/Write 0x10
CTRL_REG2 Read/Write 0x11

Group Address

Column 3 defines the address of the group. You must use a hexadecimal value for the group address.

Register Name

Column 4 defines the name of the register that contains the field.

The register name is a string that must meet the following format requirements.

  • Do not use spaces. Instead, use underscores.
  • Do not begin the register name with a number.
  • Do not use special characters.
  • The register name should be unique within one IP block.

Register Address

Column 5 defines the address of the register. You must use a hexadecimal value for the register address.

Register Address Length

Column 6 defines the bit size of the register address parameter for the field. You must use a decimal value for the register address length.

Register Data Length

Column 7 defines the bit size of the data that the register address can hold. You must use a decimal value for the register data length.

Default Data

Column 8 defines the default value for the register when the register map is loaded. You must use a decimal value for this parameter. When the register has more than one field, the first field holds the default value of the register. For the rest of the fields under the same register, the default data value can be 0.

Private

Column 9 defines whether the field will be visible to the user during normal operation of the Semiconductor Device Control Add-On. You must use a Boolean value for this parameter.
TRUE The field only appears when the Semiconductor Device Control Add-On is in debug mode.
FALSE The field is visible to the user at all times.
Note This column is currently reserved. The fields must have a value of TRUE or FALSE, but this value is not used.

Field Name

Column 10 defines the name of the field. If a field is split across multiple registers in the same register group, that field will appear multiple times in the device register map. The field name string must meet the following format requirements.

  • Use a unique field name.
  • Do not use spaces. Instead, use underscores.
  • Do not begin the field name with a number.
  • Do not use special characters.

Description

Column 11 contains a description of the field. The description is a string that must meet the following format requirements.

  • Do not use punctuation in the description.
  • Do not insert a line break in the description.

Access

Column 12 defines the access permission setting for the field. You must use one of the following string values for this parameter.

R Read-only access
RW Read and write access

Register Offset

Column 13 defines the offset for the starting position of the field within the register. You must use a decimal value for the register offset.

The following example shows how register offset, field offset, and length would be defined when a single 16-bit field is split across three registers.

Note Columns in this example do not correspond to the arrangement of columns in the device register map file.
Table 2. Register Name and Bit Position
Register Name 7 6 5 4 3 2 1 0
PRESSURE_OUT_XL POUT[7] POUT[6] POUT[5] POUT[4] POUT[3] POUT[2] POUT[1] POUT[0]
PRESSURE_OUT_L POUT[11] POUT[10] POUT[9] POUT[8]
PRESSURE_OUT_H POUT[15] POUT[14] POUT[13] POUT[12]
Table 3. Register and Field Representation in CSV File
Field Name Register Name Register Address Register Offset Field Offset Length
POUT PRESSURE_OUT_XL 0x28 0 0 8
POUT PRESSURE_OUT_L 0x29 4 8 4
POUT PRESSURE_OUT_H 0x2A 0 12 4

Field Offset

Column 14 defines the offset for the starting position within the field. You must use a decimal value for the field offset.

If a field is split and used across multiple registers, the field offset will apply to each segment of the field. Refer to the Register Offset section for an example of field offset.

Length

Column 15 defines the length of the field, or portion of the field, that is used within the register. You must use a decimal value for this parameter.

Type

Column 16 defines the type of representation for the field, either as a numerical value or as a list. You must use one of the following string values for this parameter.

Numeric Field is presented as a numerical value.
List Field is presented as a list.

Values

Column 17 defines the values for the field, either as numerical values or as a list depending on the value in the Type column. All values must be in decimal format.

If the field uses numerical values, you can input the start, stop, and step values that the field will use when assigning a definition number to the field. If the Type column is set to Numeric and the Values column is left empty, the definition number for the field will be equal to the field value at each step.

Refer to following table for an example of how to use the values for a field.

Table 4. Field Values
Type Syntax Example Example Definition
Numeric <Start Value>;<Stop Value>;<Step Value> 0;8;2
  • 0 = 0
  • 1 = 2
  • 2 = 4
  • 3 = 6
  • 4 = 8
List <Field Value>:<Definition String>;<Field Value>:<Definition String> 0:ModeZero;1:ModeOne;2:ModeTwo;3:ModeThree;4:ModeFour
  • 0 = ModeZero
  • 1 = ModeOne
  • 2 = ModeTwo
  • 3 = ModeThree
  • 4 = ModeFour

IsIndirect

Column 18 defines whether a register is direct or indirect. You must use a Boolean value for this parameter.

Value Description
TRUE Indicates that the register is indirect. If the register is indirect, you must create an indirect register sequence for the corresponding register group to perform any operations on the indirect register. You can map the indirect register sequence and register group in the CONFIGURATION MAPPING » Sequence Map tab.
FALSE Indicates that the register is direct.