aboutsummaryrefslogtreecommitdiffstats
path: root/host
Commit message (Collapse)AuthorAgeFilesLines
* examples: gpio: Refactor exampleMartin Braun2022-06-101-286/+368
| | | | | | | | | | | | | | | | The example had organically grown and was getting hard to read, and also had some known issues. Summary of fixes: - Default GPIO bank and connector are now derived from the device. This allows this example to pass without throwing an exception on E3xx and X4xx series when using default arguments. - The bitbang test is moved into its own code section, to make the rest more readable. - We move all the streamer-related code into a helper struct - Some repetitive parts of the code are moved into their own functions - The argument --require-loopback is added, which will fail tests if GPIO pins are not correctly looped back externally - --list-banks is renamed to --list_banks for consistency
* x300: Change order of GPIO banksMartin Braun2022-06-101-1/+1
| | | | | FP0 is now listed first. This helps with determining a default GPIO bank.
* tests: streaming: temporarily mark b210 dropped samples as an xfailMatthew Crymble2022-06-101-4/+12
|
* tests: streaming: use assert instead of pytest.fail for underruns/overrunsMatthew Crymble2022-06-101-2/+2
| | | | | | | When an assert statement fails, pytest will determine whether that should be a fail or an xfail. By explicitly calling pytest.fail, we were preventing pytest from doing that determination, so an individual test case that had an xfail mark would have been a hard failure.
* rfnoc: Fix vector use in replay_block_control_implAaron Rossetto2022-06-101-2/+2
| | | | | | | | | | | | | This commit fixes an issue in `replay_block_control_impl` with the initialization of the `_cmd_fifo_spaces` vector member variable. `std::vector<>::reserve()` only allocates memory for the vector items; it does not resize the vector (i.e., instantiating an `std::vector<>` and then calling `reserve()` leaves it with a size of 0). Attempting to index a zero-sized vector causes some C++ debug mode runtimes to throw an index out-of-range exception. The commit instantiates the vector using the constructor variant that allocates memory sufficient for the entries and default initializes them so that it can be indexed without issue.
* rfnoc: Fix register_xport_hop_cfg_fns() usageMartin Braun2022-06-102-4/+11
| | | | | | Note: This function is currently unused. However, it is not correctly implemented. During init, it would call the routing configuration function instead of the init configuration function.
* rfnoc: Improve comments regarding streaming and mgmt. codeMartin Braun2022-06-108-13/+74
| | | | | This commit *only* touches comments in the code for RFNoC streaming, link management and management portal.
* tests: streaming: mark non-dpdk failures as xfailsMatthew Crymble2022-06-101-8/+20
|
* tests: streaming: select appropriate uhd config file before test runsMatthew Crymble2022-06-102-0/+44
|
* tests: streaming: don't set master clock rate on x310Matthew Crymble2022-06-101-2/+5
|
* tests: streaming: fix x310 test case valuesMatthew Crymble2022-06-101-3/+3
|
* tests: streaming: add support for B210 DUTsMatthew Crymble2022-06-101-2/+7
| | | | | | The use_dpdk will be false for all B210 test cases, but still needs to be defined since the main test_streaming() function requires a value for it.
* tests: streaming: include dual_SFP parameter for all casesMatthew Crymble2022-06-101-20/+18
| | | | | | The dual_SFP test case parameter will be false for all B210 and E320 test cases, but it still needs to be defined since the main test_streaming() function requires a value for it.
* tests: streaming: add support for more DUTsMatthew Crymble2022-06-101-0/+4
| | | | | | | | | | This commit enables runs for X310, X310 TwinRx, E320, and N310. By default, python's argparse module will expect a value to be provided for each argument defined. Specifying an nargs value of '?' for the pytest options allows us to use a single pytest invocation in our pipeline configuration, even though some options don't apply to some DUT types.
* n320: Fix reading DB serial in applying correctionsMartin Braun2022-06-101-2/+2
| | | | | | The frontend corrections for N320 (IQ imbalance, DC offset) require the DB serial. However, there was an error in reading the DB serial in the code that applies the corrections.
* rfnoc: fix double conversionsLars Amsel2022-06-101-4/+3
| | | | | result of get double was saved in an int value instead of double replaced C cast by static_cast
* n320: Improve comments regarding low bandMartin Braun2022-06-102-4/+6
| | | | | The N320 code include some constants that were either unused or incorrect. This clarifies the lowband frequency.
* fpga: rfnoc: Remove rfnoc_version from target YAMLWade Fife2022-06-101-1/+0
| | | | | | This causes the latest RFNoC protocol version to be used by default and avoids the need to update YAML files every time the RFNoC protocol version gets bumped.
* python: Check rfnoc_version in rfnoc_image_builderWade Fife2022-06-102-1/+28
|
* utils: uhd_images_downloader: Increase default image download size limitmattprost2022-06-101-5/+4
| | | | | | | | | | Prompt users for download confirmation of files larger than 1 GiB instead of 100 MiB. Improve messaging to make this process less concerning for users. The defined limit is only for the user's convenience. A 1 GiB limit should allow users to download most uhd images and related files without being prompted. Signed-off-by: mattprost <matt.prost@ni.com>
* uhd: change default into option flag in register definitionLars Amsel2022-06-103-35/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | This adds support for read only registers in generated interfaces. For this the default is extended to an option string. The old format is still supported for backward compability, so if options string is just a number it will be handled as a writable number. The option string is a comma separated list with key=value pairs. The value is optional and treated as None if missing. common.py now allows to pass in **kwargs to the generate method which is used by gen_zbx_cpld_regs.py to pass a filter function for registers used by mpm only. get_all_addr now has an additional (optional, defaults to false) flag to indicate whether read only addresses are to be returned or not. It also supports type generic for the result to align with get_changed_addr function. The ZBX CPLD CTRL map is adapted accordingly to reflect read only registers. The power registers are flagged as MPM scope only (and not used in ZBX CPLD control of UHD). Co-authored-by: Martin Braun <martin.braun@ettus.com>
* cmake: Add support for fedora rpm versioningmattprost2022-06-103-16/+24
| | | | | | | | | Adds cmake option for replacing dashes in the UHD Component version with underscores. This is necessary as Fedora package management is now enforcing the format <Package>-<Version>-<Release> for all rpm builds, so dashes in the UHD_VERSION from dev branches is not supported. Signed-off-by: mattprost <matt.prost@ni.com>
* n310: Improve LO source control options for ALL and LO2 casesmattprost2022-06-101-19/+40
| | | | | | | | If ALL option is specified, set lo source for both lo's. Do not report an error if user sets LO2 to internal. Enforce single lo target for queries about lo state. Signed-off-by: mattprost <matt.prost@ni.com>
* cmake: Drop .deb generation via cpack in favour of better toolsMartin Braun2022-06-101-49/+18
| | | | | | Building .deb files has an entire ecosystem dedicated to it which is superior to cpack, and we don't test cpack, either. Users wanting to build .deb files should take a look at tools/debs/uhd_ubuntu_deb.py.
* utils: uhd_images_downloader: Print name of file that exceeds limitWade Fife2022-06-101-5/+5
| | | | | When a file exceeds the download limit, print the name of the file in the message that asks if we want to continue downloading.
* rfnoc: Improve documentation for chdr_ctrl_endpointMartin Braun2022-06-101-3/+23
|
* cmake: Cache UHD_VERSION in all casesSteven Koo2022-06-101-2/+2
| | | | | | | This outputs the variable in the CMakeCache, so that we can scrape the version later for building package Signed-off-by: Steven Koo <steven.koo@ni.com>
* utils: uhd_usrp_probe: Add DB rev to outputMartin Braun2022-06-101-0/+6
| | | | | | | | | | | | | | When running uhd_usrp_probe, this adds the daughterboard revision if available: ``` | _____________________________________________________ | / | | RX Dboard: 0/Radio#0 | | ID: TwinRX Rev C (0x0095) | | Serial: ABC1234 | | Revision: 4 ```
* utils: x300_reset: Make py3k-readyMartin Braun2022-06-101-14/+15
|
* lib: Add missing include to offload_io_service_client.hppMartin Braun2022-06-101-0/+1
|
* debian: Resolve lintian issuesAaron Rossetto2022-04-262-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | This PR makes a couple of minor changes to Debian packaging files to resolve errors reported by Lintian during CI and manual building of .debs after having been updated in 38fb5e262: - Remove instances of `${python3:Depends}` in the rules file, as this substitution directive cannot be used without specifying `--with python3` in the `dh` debhelper command invocation. However, the Docker containers that are spun up to build .debs as part of UHD CI do not include the Debian Python helper package necessary to use the substitution even if `--with python3` is specified. Thus, the substitution was removed and replaced with the actual names of the dependent Python packages. - Remove the `Files-Excluded` section from the copyright file. Lintian flags an error whenever a file in that section is present in the source tree (which the specified files are). The addition of this section was supposed to bring UHD's built-in Debian packaging files more in line with those used by the actual Debian package maintainer, but it is likely that the actual Debian packing process runs additional steps that reference this section and uses it to remove the specified files which we currently don't run.
* uhd: Prepare for 4.2.0.0 releaseAaron Rossetto2022-04-191-527/+529
| | | | | - Updated CHANGELOG - Updated Debian changelog
* utils: Check install-prefix for imagesSteven Koo2022-04-191-8/+11
| | | | | | | | On some installs, pkg-path and install-prefix aren't equivalent. Since uhd_images_downloader defaults to installing into $CMAKE_INSTALL_PREFIX/share/uhd/images, we should look there too. Signed-off-by: Steven Koo <steven.koo@ni.com>
* docs: multi_usrp: Clarify GPIO source bank meaningMartin Braun2022-04-191-7/+10
|
* rfnoc: Update image builder to check for deprecated blocksWade Fife2022-04-121-27/+49
| | | | | | | | | | Adds checks for deprecated blocks (e.g., radio_1x64.yml instead of radio.yml) as well as deprecated IO signature types (e.g., ctrl_port instead of ctrlport). Deprecated block descriptions are no longer parsed. Old IO signature types are automatically converted to the new type. Warnings are printed in both cases.
* multi_usrp_rfnoc: Set assignment instead of equalitySteven Koo2022-04-121-1/+1
| | | | | | | This resolves a typo intoduced by multi_usrp_rfnoc: Add TX buffering using Replay Signed-off-by: Steven Koo <steven.koo@ni.com>
* uhd: Update MPM compat minorAaron Rossetto2022-04-121-1/+1
|
* uhd: Prepare for 4.2.0.0-rc1 releaseAaron Rossetto2022-04-082-2/+589
| | | | | | - images: Updated manifest - uhd: Updated changelog and version string - debian: Updated changelog
* rfnoc: Add filter_node python bindingsmattprost2022-04-071-0/+9
| | | | Signed-off-by: mattprost <matt.prost@ni.com>
* docs: n310: Add Filter API sectionmattprost2022-04-071-0/+91
| | | | | Co-authored-by: bpadalino <bpadalino@gmail.com> Signed-off-by: mattprost <matt.prost@ni.com>
* n310: Add Filter API to n310mattprost2022-04-078-18/+203
| | | | | | | | | | Add the Filter API to n3xx specifically for the AD937x device. The TX filter is limited to 32 taps, and the RX filter is limited to 48 taps. This feature requires MPM version 4.2 or later on the device. Co-authored-by: bpadalino <bpadalino@gmail.com> Signed-off-by: mattprost <matt.prost@ni.com>
* n310: Add frontend bandwidth controlmattprost2022-04-073-25/+107
| | | | | | | | | | | | Allow users to control the Mykonos frontend bandwidth settings for Rx and Tx. Note that this operation requires the daughterboard to re-initialize, so it may take some time. Values for frontend filter settings were derived using ADI's AD9371 Filter Wizard. This feature requires MPM version 4.1 or later on the device. Co-authored-by: bpadalino <bpadalino@gmail.com> Signed-off-by: mattprost <matt.prost@ni.com>
* n310: cpld: Get and set TX ATR bitsmattprost2022-04-072-0/+66
| | | | | | | | | This allows the user to get the current state of the tx atr bits and set them back to a given state. This is useful for the n310 when resetting the front end, in order to avoid any tx power out of the frontend when the init_cals are run. Signed-off-by: mattprost <matt.prost@ni.com>
* ic_reg_maps: Generate save state read functionsmattprost2022-04-071-0/+24
| | | | | | | | Auto-generated IC Register Maps (e.g. magnesium_cpld_regs, rhodium_cpld_regs, etc.) now provide getter methods for all attributes. This gives access to the save state information for the device. Signed-off-by: mattprost <matt.prost@ni.com>
* types: filters: Add python support for digital filtersmattprost2022-04-072-5/+46
| | | | Signed-off-by: mattprost <matt.prost@ni.com>
* utils: string: Add split string utility functionmattprost2022-04-071-0/+35
| | | | Signed-off-by: mattprost <matt.prost@ni.com>
* tests: rfnoc: Add another loop graph testMartin Braun2022-04-071-0/+110
| | | | | | This test mimics the Radio <-> Replay loop graph. Because we need one back-edge in this graph, this test makes sure the atomic item sizes still resolve.
* rfnoc: Modify prop. propagation algorithm (back-edge resolution)Martin Braun2022-04-074-33/+43
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, the property propagation algorithm would first forward and resolve properties only along forward edges. Then, we would check that properties also align across back-edges. The assumption is that graphs are always structured in a way such that back-edges would align when the resolution is done. However, for the following graph, this would fail: Radio ---> Replay ^ | +---------+ The reason is that the radio block and the replay block both have an "atomic_item_size" property, which needs to be resolved both ways. If the default atomic_item_size is 4 for the radio, and 8 for the replay block, then the input atomic_item_size on the radio will never be aligned with the output atomic_item_size of the replay block, and there is no other mechanism to align those. The solution is to run the edge property propagation and resolution twice, first for the forward edges, then for the back-edges. For graphs that would previously work, this makes no difference: The additional step of propagation properties across the back-edges will not dirty any properties. However, for graphs like the one above, it will provide an additional resolution path for properties that are otherwise not connected.
* rfnoc: graph: Allow property forwarding on back-edgesMartin Braun2022-04-072-5/+8
| | | | | | The internal helper function graph_t::_forward_edge_props() receives another argument, which decides if properties are forwarded on forward- or back-edges. Previously, only forward-edges were possible.
* multi_usrp_rfnoc: Add TX buffering using Replaymichael-west2022-04-076-86/+482
| | | | | | | | | | | Enabled with the "tx_replay_buffer" device argument. Buffers TX data in DRAM using the Replay block (version 1.1 or higher required), allowing more buffering of data on the device. May reduce underruns for certain applications. The Replay block is currently limited to 32 play commands, so fewer calls to send() with larger buffers will perform better than more calls with smaller buffers. Signed-off-by: michael-west <michael.west@ettus.com>