I read the tx timestamp using the dwt_readtxtimestamp API function and the lowest 8 bits of this 40-bit timestamp are always 0. Although DW1000 User Manual says the opposite (figure below). I call this function by DWT_INT_TFRS interrupt.
What should I do to get the last 8 bits to be non-zero?
The transmission can only happen at the moment of time where lower N bits are clear. The resolution of Rx is still 15.65ps however for Tx chip can only transmit at a point of time when lower 8(9) bits are clear. So no, you cannot get what you want. The reason for that is very simple, 1st is hw limitation and 2nd - you can control Tx, however the whole interrest is on Rx side.
The TX raw timestamp will always have 0 in the 9 least significant bits, as you say this is a feature of the hardware.
However if you have set a Tx antenna delay then this would adjust the Tx Timestamp value and so result in non-zero values in the adjusted value register.