- Added program documentation string.
- Marked required options as required().
- Added short option strings for required options.
- Made individual option descriptions more descriptive.
- Harmonized naming of options where appropriate.
Introduced alias options for renamed options to keep
backward compatibility.
- Added program documentation string.
- Marked required options as required().
- Made individual option descriptions more descriptive.
- Harmonized naming of options: renamed ampl into wave-ampl.
- Added program documentation string.
- Marked required options as required().
- Added short option strings for required options.
- Made individual option descriptions more descriptive.
- Harmonized naming of options where appropriate.
Kept old option names as alias options not getting printed by --help.
This takes issue_stream_cmd() apart in a way that it can be used to
arm the trigger that waits for the TX, then return, so that the TX can
be issued. Afterwards the received data needs to be collected with the
wait_for_buffer_full() method. The default behavior when not using the
new trigger is unchanged.
Fixes an issue that was recently introduced with commit 2a77ec9,
which fixed the per attempt timeout of FPGA builds. Some of the
x440 FPGA builds can take longer than the default 6h timeout to
successfully compile. After the per attempt timeout bug was fixed
some of our most crowded FPGA targets were prematurely terminated,
significantly reducing compile success rate. This commit increases
the per attempt timeout from 6h to 9h.
While the Ctrl-only BFM doesn't necessarily have CHDR data, it can
still use the CHDR clock. This means we need to be able to control the
reset for that clock. Without this, blocks that use the rfnoc_chdr_clk
will hang in simulation.
The version check causes an error in Vivado that prevents the use of
JTAG/debug when users have a patch installed. This disables the error,
but it will still give a warning in case they really do have a
legitimate mismatch. This change fixes the issue when users use our
tooling to launch a build in the GUI then launch the hardware manager,
but it may still occur if they launch the GUI themselves outside of our
tooling.
- Added program documentation string.
- Marked required options as required().
- Added short option strings for required options.
- Made individual option descriptions more descriptive.
- Harmonized naming of options where appropriate.
With this change it is possible to execute changeset_testlist.py
in a directory which does not match the toplevel of the repository.
The toplevel is automatically detected by calling:
git rev-parse --show-toplevel
If open output file failed (e.g. missing permission) this was not
tracked and the C rx example crashed when try to write to the
empty file descriptor. This checks the result of fopen and prints
the str error of the failure for graceful exit.
- All FPGA manual content is now side-by-side with other manual content.
- Switched instantiating files to using the \subpage command.
- Repaired broken ToC entries.
- Removed references to former FPGA doc directory from cmakelist.
Implement a getter function to return the list of transport adapters
that can be used for remote streaming.
Also, add documentation for the get_chdr_width function.
Co-authored-by: Jörg Hofrichter <joerg.hofrichter@emerson.com>
- intent: make it easier to find and maintain content
- introduced a doxygen layout file to adapt the structure
- changed the top-level chapter structure
- shifted existing sections into new chapters
- organized section-level doxygen files into subfolders
- added getting started and RFNoC content
Currently we download all data at once from replay in the DRAM utils.
This gets problematic on sequencing error on connections with multiple
hops for the UDP transport. In that case we need to query the replay
block for status but because of the sequence errors the response can
get lost and UHD has no measure to handle lost request responses.
The alternative implementation now downloads the data in chunks and
retriggers a complete chunk in case of an error. That way we do not
need to query the replay block for it's position.
We handle responses for init and flow control in the same code
location, because both send the same message to the host. Because
the FPGA removes messages in the queue, we need to delay the flow
control so the request does not get lost.
Fixed an issue where the first sample could have a different alignment
from the rest of the samples. This could manifest as a missing or
duplicated sample in the data stream.
This was most likely to occur when doing a timed RX/TX followed by an
untimed RX/TX, in which case a sample might be missing at the
beginning of the burst.
The code was using abs() where std::abs() would be appropriate. The
former is from the C library, and therefore does not do overloads, and
only operates on integers.
Because a meta_range_t is a vector of ranges, the following syntax is
ambiguous, if not to the compiler then to human readers:
```cpp
meta_range_t r{0.0, 1.0};
// Not intuitively clear if this means r{range_t(0.0), range_t(1.0)}, or
// if it means r{range_t(0.0, 1.0)}.
```
Within UHD, we modify some calls to meta_range_t constructors that are
using braced initializers to explicitly use other constructors.
Note that the ambiguous usage of the braced initializer syntax is
allowed and documented in ranges.hpp, we simply remove it to clarify the
intent of certain lines. Also, non-ambiguous usage of the braced
initializer ctor is also perfectly fine, e.g.:
```cpp
meta_range_t r{range_t(0.0), range_t(1.0), range_t(4.0)};
```
Prior to 7bae6e60, the following two calls were equivalent:
```cpp
meta_range_t r1{0.0, 2.0};
meta_range_t r2(0.0, 2.0);
```
With that additional constructor for initializer lists, the former call
would be interpreted as:
```cpp
meta_range_t r1{range_t(0.0), range_t(2.0)};
```
...which has a different meaning.
With this patch, we bring back the original behaviour while retaining
the new initializer list syntax.
Additional unit tests cover this behaviour.
The boost library path was already added when running unittests
(UHD_ADD_TEST) but not when running python based unittests
(UHD_ADD_PYTEST). The boost library path is required when compiling
against custom boost version (tested with boost 1.89.0), because
some boost libraries have implicit dependencies on other boost
libraries which are not found otherwise.