New Feature: ‘volatile’ Register Fields

Following several user requests, we added support for volatile register fields to the airhdl generator. Volatile fields are a special kind of read-write field whose write-value is set using an AXI4-Lite write transaction, and whose read-value originates from the user logic.

A typical application for volatile fields is time synchronization, where you want to read a counter value from the user logic, perform some adjustment on that value, and write it back to the hardware. Previously, this would have required two registers: a read-only register to read the current counter value, and a write-only register to update the counter value. Using the new volatile field, you can do it with just one counter register as shown in the diagram below:

An airhdl register bank with a volatile counter.value field allows reading a hardware counter and loading that counter to a new value through a single AXI4-Lite register.

The diagram above assumes a read-write counter register with a volatile value field, which looks like this in the airhdl user interface:

Reading from the counter register over the AXI4-Lite interface returns the value of the register bank’s counter_value_rd input port, which reflects the current counter value.

Writing a new value to the counter register over the AXI4-Lite interface updates the corresponding counter_value port of the register bank and pulses the counter_strobe port, which has the effect of loading the new value into the external counter component.

To create a volatile field within a read-write register or register array, activate the Volatile checkbox in the Create or Edit Field dialog:

Volatile fields are currently in beta and available to selected users. To get early access to this feature, please get in touch with

Published by

Guy Eschemann

Founder and CEO at noasic GmbH. Lead developer at