I3C Timing Register Configurations

The tables below provide example Control and Status Register (CSR) timing values for the I3C controller. These cycle counts are automatically calculated to comply with the absolute physical nanosecond constraints defined in the MIPI I3C Basic and I2C Fast Mode specifications. The configurations shown represent valid, ready-to-use timings for a selection of common system clock frequencies.

Generating Custom Timings

If your specific FPGA or ASIC target uses a different underlying system clock (f_sys), or if you need to operate at a slower I3C bus frequency (f_scl), you should generate a custom set of timings.

You can calculate and validate new configurations using the timings.py utility via the command line:

# Calculate timings for a 200 MHz system clock and the default 12.5 MHz I3C bus
python tools/timing/timings.py --freq=200e6

# Calculate timings for a specific 10 MHz I3C bus on a 500 MHz system clock
python tools/timing/timings.py --freq=500e6 --bus_freq=10e6

# Output the results directly as a MyST Markdown table for documentation
python tools/timing/timings.py --freq=333.333e6 --target_name="FPGA 333MHz" --md

Example Timing CSRs

FPGA Configuration

System Clock: 200.00 MHz | Target SCL: 12.50 MHz

Table 12 FPGA Timing Registers

Register

Cycles

Time (ns)

T_R

0

0.00

T_F

0

0.00

T_SU_DAT

1

5.00

T_SU_DAT_I2C

20

100.00

T_HD_DAT

0

0.00

T_HIGH

8

40.00

T_HIGH_OD

5

25.00

T_HIGH_INIT_OD

40

200.00

T_HIGH_I2C

120

600.00

T_LOW

8

40.00

T_LOW_OD

40

200.00

T_LOW_I2C

260

1300.00

T_HD_STA

8

40.00

T_HD_STA_I2C

120

600.00

T_HD_RSTA

4

20.00

T_SU_STA

4

20.00

T_SU_STA_I2C

120

600.00

T_SU_STO

4

20.00

T_SU_STO_I2C

120

600.00

T_DS_OD

4

20.00

T_FREE

8

40.00

T_FREE_I2C

260

1300.00

T_AVAL

200

1000.00

T_IDLE

40000

200000.00

ASIC Configuration

System Clock: 500.00 MHz | Target SCL: 12.50 MHz

Table 13 ASIC Timing Registers

Register

Cycles

Time (ns)

T_R

0

0.00

T_F

0

0.00

T_SU_DAT

2

4.00

T_SU_DAT_I2C

50

100.00

T_HD_DAT

0

0.00

T_HIGH

20

40.00

T_HIGH_OD

12

24.00

T_HIGH_INIT_OD

100

200.00

T_HIGH_I2C

300

600.00

T_LOW

20

40.00

T_LOW_OD

100

200.00

T_LOW_I2C

650

1300.00

T_HD_STA

20

40.00

T_HD_STA_I2C

300

600.00

T_HD_RSTA

10

20.00

T_SU_STA

10

20.00

T_SU_STA_I2C

300

600.00

T_SU_STO

10

20.00

T_SU_STO_I2C

300

600.00

T_DS_OD

10

20.00

T_FREE

20

40.00

T_FREE_I2C

650

1300.00

T_AVAL

500

1000.00

T_IDLE

100000

200000.00


Last update: 2026-06-11