| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
This commit exposes uhdlib/rfnoc/chdr_types.hpp in the public includes.
Additionally, it takes some types from uhdlib/rfnoc/rfnoc_common.hpp and
exposes them publicly in uhd/rfnoc/rfnoc_types.hpp.
Finally, one constant is moved from uhdlib/rfnoc/rfnoc_common.hpp to
uhd/rfnoc/constants.hpp
Signed-off-by: robot-rover <sam.obrien@ni.com>
|
|
|
|
|
|
|
|
|
| |
It would be confusing to have two classes named chdr_packet. As it makes
more sense to name the new public chdr parser class chdr_packet, the
internal uhd::rfnoc::chdr::chdr_packet class is being renamed to
chdr_packet_writer to better represent its functionality.
Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
get_lib_path() uses the libuhd location on disk to dynamically
determine the installation prefix at runtime. This fix normalizes the
libuhd path before any path operations are done to extract the library
directory and then prefix directory.
Previously, using a non-normalized library path, the returned prefix
directory would be incorrect in some cases (e.g. when loaded through
GNU Radio). In these error cases, the libuhd path would be
$PREFIX/lib/./libuhd.so
(with a no-op /. inserted) which would result in a technically correct
library directory of `$PREFIX/lib/.` but an incorrect prefix directory
of `$PREFIX/lib`.
With the normalization fix, the libuhd path is corrected to
$PREFIX/lib/libuhd.so
and the subsequent path manipulation to get the library and prefix
directories will work as intended.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
The product ID check should be masked with 0xF8 and checked to be 0x08.
With a device off and weak pull-ups, the readback would always read
0xFF, passing the ID check when it obviously wasn't there. Extending
the mask to be 0xF8 shows that both 0's and 1's are read back from the
device.
|
|
|
|
|
|
| |
Letting garbage collection close the file works when using CPython, but
it fails with PyPy which uses a different garbage collection strategy.
This makes sure that the file is closed by using a file context manager.
|
| |
|
|
|
|
|
| |
This adds some more details on mpm.conf, what it does, how it works, and
which keys it accepts.
|
|
|
|
|
|
|
|
| |
No functional changes. Fixes for things that PyLint complains about, but
are safe to change anyway, as well as a minor improvement to a docstring
that referenced non-existant args.
This touches files that are mpm.conf-related.
|
|
|
|
|
|
|
|
| |
This effectively reverts 0433e74. The set_shutdown() and get_shutdown()
API calls do not have a counterpart in simple_spi_core.v, which is
typically the HDL endpoint for this core driver, and thus could write to
a non-existent register. They are also never used in UHD, nor are they
part of the spi_iface interface.
|
|
|
|
| |
This removes some comment that include code that still gets executed.
|
|
|
|
|
|
|
| |
io_type's implementation was removed when host/lib/depricated.cpp was
removed. This commit also removes the hpp and installation.
Signed-off-by: Steven Koo <steven.koo@ni.com>
|
|
|
|
| |
Unused CHDR port was not being drained of discovery packets.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The rnfoc/xport section is refactored in System Verilog to allow the
following improvements
(1) CPU_W - Sets the size of the c2e and e2c pipes. This can be run
at a different clock rate than the main ethernet pipe
(2) CHDR_W - Sets the size of the v2e and e2v pipes. This can be run
at a different clock rate than the main ethernet pipe
(3) ENET_W - Sets the size of the eth_tx and eth_rx pipes.
eth_interface_tb runs traffic from e2c,e2v,v2e,c2e simultaneously
against the original xport_sv implementation, and against the new
implementation with widths of 64/128/512. A chdr_management node
info request queries the port info of the node0 in the eth_interface.
eth_ifc_synth_test.sv can be compiled with the make xsim target to test
out the size of various configurations.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
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.
|