Option `-q` of the NR softmodem can now take an argument to choose the
NR L1 statistics to display:
* no `-q` show no statistics
* `-q` or `-q 1` shows the usual statistics with averaging from gNB start
* `-q 2` shows the advanced statistics with distribution with a reset every second
When timers are started/stopped/merged on mixed slot,
the measured times are not homogeneous as the mixed slots are much
lighter than full UL/DL slots.
Then, to make the analysis of results easier,
we do not measure the mixed slots.
Timers were relying on rdtsc which gives a number of ticks which should
be proportionated by the clock frequency.
But the clock frequency can vary.
Then this way of calculating time is not reliable.
This commit offers to use the posix clock monotonic raw instead.
* Standard Deviation
* Optional Sorted list enabling:
* min
* median
* q1
* q3
* d1
* d9
The sorted list is optional.
It is enabled by initializing the sorted list which allocates the list.
The size of the list that is allocated is an argument of the initialization.
* Global timers were started and stopped
in the TX symbol processing tasks
which is not thread safe
* gNBs nrL1_stats.log now shows
PDSCH generation time rather than
layer mapping and precoding times
* Add option `--tx-sym` for the softmodems and `-Y` for `nr_dlsim`
to provide the number of symbols processed per thread.
It defaults to 0 which makes that every symbols are processed in one thread.
* The last symbol processing task is processed in the L1 TX thread.
There was an indexing error in the calculation of the symbol offset `re_beginning_of_symbol`.
The symbol was tested to hold PTRS or DMRS based on the index of the
first symbol processed in the task and not based on the index of the
symbol as it should be.
Then PDSCH generation was not working properly for more than one symbol
per task.