The module facilitates management of the Processing System (PS) and PS/PL interface. It provides Register and Clocks classes for setting and getting of ARM Architecture register bits. The Register class is used in the Clocks class for getting the ARM clock frequency, and getting and setting the frequencies Programmable Logic (PL) clocks.


Bases: object

Class for all the PS and PL clocks exposed to users.

With this class, users can get the CPU clock and all the PL clocks. Users can also set PL clocks to other values using this class.


float – The clock rate of the CPU, measured in MHz.


float – The clock rate of the PL clock 0, measured in MHz.


float – The clock rate of the PL clock 1, measured in MHz.


float – The clock rate of the PL clock 2, measured in MHz.


float – The clock rate of the PL clock 3, measured in MHz.

class, width=32, debug=False)[source]

Bases: object

Register class that allows users to access registers easily.

This class supports register slicing, which makes the access to register values much more easily. Users can either use +1 or -1 as the step when slicing the register. By default, the slice starts from MSB to LSB, which is consistent with the common hardware design practice.

For example, the following slices are acceptable: reg[31:13] (commonly used), reg[:], reg[3::], reg[:20:], reg[1:3], etc.


The slicing endpoints are closed, meaning both of the 2 endpoints will be included in the final returned value. For example, reg[31:0] will return a 32-bit value; this is consistent with most of the hardware definitions.


int – The address of the register.


int – The width of the register, e.g., 32 (default) or 64.

classmethod count(index, width=32)[source]

Provide the number of bits accessed by an index or slice

This method accepts both integer index, or slice as input parameters.

  • index (int | slice) – The integer index, or slice to access the register value.
  • width (int) – The number of bits accessed.