Create a 64-bit counter component that will keep track of the current system time, which is a combination of Unix time (higher 32 bits) and number of nanoseconds (lower 32 bits). It shall be increased on every clock tick (assume 50MHz clock frequency) for a number of nanoseconds that corresponds to a clock period. There must be a way to set the initial counter value, i.e., to be able to set system time. Counter shall be set to all zeros on system start up.
Create a custom logic for comparing the current system time with a provided timestamp and then generate an event according to a specified type.