| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Support management payloads on busses over 64 bits
Automatically set CHDR width for mpmd_link_if_ctrl_udp
|
|
|
|
|
| |
This allows device::find() calls to proceed even when encountering an empty/invalid
serial number or serial number device argument hint.
|
| |
|
|
|
|
|
|
| |
Contains a fix for the AXI4LITE_ASSIGN macro, and adds
AXI4LITE_PORT_ASSIGN, AXI4LITE_PORT_ASSIGN_NR, and
AXI4LITE_DEBUG_ASSIGN macros.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Components are connected together with AxiStreamIfc. Some features
include:
(1) Add bytes to the start of a packet
(2) Remove bytes from a packet
(3) Wrappers for some older components
a. fifo - buffer but imediately pass a packet
b. packet_gate - buffer and hold till end of packet
c. width_conv - cross clock domains and change width of axi bus
The AxiStreamIf was moved from PkgAxiStreamBfm to its own file. It can
be used to connect to ports with continuous assignment.
AxiStreamPacketIf must be used procedurally but allows the following
new methods:
- reached_packet_byte - notify when tdata contains a paritcular byte
- get_packet_byte/get_packet_field - extract a byte or field from axi
- put_packet_byte/put_packet_field - overwrite a byte or field onto axi
|
| |
|
| |
|
|
|
|
|
| |
radio_control doesn't implement any discoverable_features in
particular, but this gives it the API to do so.
|
|
|
|
|
|
| |
Classes which want to implement discoverable_feature can simply inherit
from this registry and get access to an ergonomic map-backed registry of
features.
|
|
|
|
|
|
|
|
| |
The "discoverable features" API handles how clients access the myriad
features we offer, without simply adding a million has_FOO and do_FOO
methods to radio_control and multi_usrp. discoverable_features allows
clients to query the existance of, enumerate, and ultimately they get
(by enum or by type) an object which implements their wanted feature.
|
|
|
|
|
| |
This is useful when cross-compiling UHD for other architectures like arm or
aarch64.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(1) Synthesizable AxiLiteIf
(2) Simulation model for AxiLite contains an AxiLiteTransaction class
and an AxiLiteBfm class.
Important Methods
a. wr - performs non-blocking write and checks for expected response
b. wr_block - performs a blocking write and provides response
c. rd - performs a non-blocking read and checks for expected response
d. rd_block - persforms a blocking read and provides response
The model allows parallel execution of reads and writes, but enforces
rd and write ordering when using the above methods. When transactions
are posted directly, ordering is not guaranteed, and reads and writes
are put on the interface immediately.
|
|
|
|
|
|
|
| |
Adds LATENCY parameter to control the ammount of pieplineing. Adds a
clock enable to control the advance of the pipeline.
Used in xport when calculating new UDP headers for CHDR traffic.
|
|
|
|
|
|
| |
This runs update_fbs.py --verify as a unit test, and fail accordingly.
The test passes if git executable is not found or the schema files are
not within a git repo, because both are not a dependency of UHD.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Each version of flatbuffers (might) generate different header files
for the same schema file. Therefore we cannot compare the content
of the generated headers to detect changes in the schema that are
not accompanied by a change in the generated header.
To have at least a minimal check that the schema matches the
generated header we compare the git hashes of both. We will not
allow to change the schema without changing the header and vice
versa. This condition is checked by a unit test.
|
|
|
|
|
|
|
|
|
| |
Flatbuffers offers an option to set the default extension for
binary files. Our calibration files have the extension .cal. Set
the extension in all schema files to ease conversion between
binary and text representation of calibration files.
Updated documentation accordingly.
|
|
|
|
|
| |
Note: timeouts were occurring on n310 due to an increase in
daughterboard re-initialization time.
|
|
|
|
|
|
|
| |
- The UHD auto-detection was broken. Now it can find UHD in the same
directory.
- The main() function was split into main() and run(), which would allow
loading this module and calling run() as it's own function.
|
|
|
|
|
| |
This makes the utility warn the user when they pass a path argument that
is invalid; the utility falls back to defaults if this occurs.
|
|
|
|
|
| |
The edge_list for a given rx/tx chain should never be empty so this
explicitly performs that check, which prevents a potential bad access.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit allows the RFNoC image builder utility to support block
definition .yml files where the num_ports values are numerical
expressions using values sourced from the parameters section when the
block is used in an RFNoC image. An example of such an expression for
num_ports is the split stream block, where the number of output ports is
defined as the product of the NUM_PORTS and NUM_BRANCHES parameters:
data:
fpga_iface: axis_chdr
clk_domain: rfnoc_chdr
inputs:
in:
num_ports: NUM_PORTS
outputs:
out:
num_ports: NUM_PORTS*NUM_BRANCHES
In an RFNoC image definition .yml file, these parameters can be
specified when a split stream block is instantiated in an image:
split0:
block_desc: 'split_stream.yml'
parameters:
NUM_PORTS: 2
NUM_BRANCHES: 3
Thus, the split0 instance of the split stream block is configured with 2
input ports and 6 output ports (2*3 from NUM_PORTS*NUM_BRANCHES).
When the RFNoC image builder runs and encounters a block instantiation
where that block has a non-integer string in the num_ports key of its
block definition, it performs a textual replacement of the identifiers
in the string with the corresponding values from the parameters section
of the block's instantiation. If no such parameter corresponding to the
identifier exists, the block definition file's parameters section is
consulted for a default value for the parameter. If no such parameter
can be found in either of these locations, the identifier is left
unchanged in place.
After the text substitution step, the expression is evaluated using
Python's expression evaluator. The expression should evaluate to an
integer value, which is then used as the num_ports value. If the
expression does not evaluate to an integer, or fails to evaluate, an
error will be reported.
|
|
|
|
|
|
|
|
| |
This fixes the rfnoc_null_src_sink, chdr_crossbar_nxn, and
chdr_stream_endpoint blocks so that wider CHDR widths are properly
supported. It also updates PkgChdrBfm to able to properly test these
blocks. The testbenches have been updated to test both 64 and 512-bit
widths.
|
| |
|
| |
|
|
|
|
|
|
|
| |
This commit augments the existing FFT RFNoC block controller with
C++ functions through which the block can be configured, as well as
adding range checking to the various properties that sit atop the FFT
RFNoC block registers.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Current implementation needed manual interaction to calibrate each
antenna. More sophisticated setups are able to switch between channels
and antennas programmatically.
This commit introduces a base class that handle the switch behaviour. The
previous implementation moved to a ManualSwitch class which is the
default switch. Without any options the previous flow remains unchanged.
A new class is able to handle NI switch models. The switch port can
be given via options parameter (comA is default). The channels are connected
in ascending order. The user has to ensure that the cable setup matches
the order given for channels and antennas.
Co-authored-by: Martin Braun <martin.braun@ettus.com>
|
|
|
|
|
|
|
|
|
|
| |
UHD has a custom file to find libusb. This fixes a warning coming from
that file caused by the fact that we're looking for a package called
LIBUSB, but the file was called FindUSB1 (i.e., we're expecting
a package name of USB1).
Common CMake calls were also moved to lowercase for CMake coding
guidelines consistency.
|
|
|
|
|
|
|
|
|
| |
The existing SPI core (simple_spi_slave.v) was limited to 32 bit. This
commit adds a second spi core with capability to transfer up to 64 bits
while keeping the same amount of resources when using generic setting
MAX_BITS = 32. Furthermore, the new module aligns mosi and miso with the
edges of sclk. The register stages were not aligned in the existing
version.
|
|
|
|
|
|
|
| |
During recreation of block diagrams any RTL modules will be kept in
hidden directories within the build directory. Updates of the RTL
sources might not be taken into account. Solution is to remove Xilinx's
hidden project directories before calling vivado.
|
|
|
|
|
|
|
|
|
| |
Add chapter to explain usage of supported switch classes which
handle connection of DUT and measurement devices. Documentation
is done for ManualSwitch (default) and NI switch for devices that
can be used by the niswitch Python package.
Co-authored-by: Martin Braun <martin.braun@ettus.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Add UHD_ADD_PYTEST() CMake macro
- Add CMake code to tests/CMakeLists.txt to auto-run all registered
Python unit tests
- Add a token unit test (it replicates parts of ranges_test.cpp)
The way Python-based unit tests are implemented in UHD is that they can
import uhd, and then operate on the module as usual.
Writing unit tests in Python instead of C++ can have multiple
advantages:
- If they test PyBind-wrapped C++ code, they can test both the binding
and the underlying C++ code at once
- Writing unit tests in Python may be more concise
|
|
|
|
|
| |
This avoids a dynamic linker error by copying the ALL_CHANS value into
the the Python bindings before using it.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The pca953x driver introduced a change for how the "label" property
populates. Instead of using the device model, it gives a device specific
name. As a replacement, use device/name. This affects the tca6424
and tca6408.
For the kernel change that causes this see:
https://github.com/torvalds/linux/commit/5128f8d4450159f59565d247437d3bedda3994cb
|
| |
|
| |
|
|
|
|
|
|
| |
This PR applies antenna channel settings before available calibration
data, and moves initialization code to setup_device, returning necessary
settings in a tuple.
|
|
|
|
| |
Before this, the python_api_test didn't assert an error when it failed.
|
|
|
|
|
|
|
|
| |
One of the devtests (the python_api_test) gets skipped without failures
if the uhd module can't be loaded. However, this can mask errors if the
uhd module can't be loaded because it's broken. This change will verify
if the uhd module should have been loaded, and throw an error if that's
the case.
|
| |
|
|
|
|
|
|
|
|
| |
This is a test that automatically executes API calls. The following
tests were broken:
- clock source: On B200mini, we need to set the time source back to
internal to test the clock source.
- The filter API call tests did not match the API calls themselves
|