Commit Graph

11271 Commits

Author SHA1 Message Date
Aki Tomita
91eaea2ad4 github: update template so it works with the UI 2025-04-29 18:21:53 +02:00
Abhishek Verma
4c74532d68 examples: updated help description and doc string
Improving user experience with examples.
- added/updated example's functionality and intent in --help
- added/updated each arg help description in --help
- updated doc string as per ni-python-styleguide
2025-04-29 08:40:46 +02:00
Martin Braun
5df2c21265 rfnoc_image_builder: Improve connection checking
When the image core YAML file contained problems such as:

- Invalid block names
- Invalid port names
- Incompatible connections of IO ports

...in a connection definition, the most likely outcome would be an
exception thrown with a cryptic message like this:

 AttributeError: 'CommentedMap' object has no attribute 'io_ports'

With this change, all connections are scanned for validity before
continuing. Also, to make the the error message outputs more useful, the
list of valid connections are folded into the individual error message,
and no longer towards the end of the image builder output.

For example, the error message could now look like this:

⛔   There are errors in the image core file's connection settings:
Destination port 'nullSink0.in_0' not found. Available ports on \
       'nullSink0': sink, loop
Source port 'nullSink0.out_0' not found. Available ports on \
       'nullSink0': source, loop
2025-04-25 09:09:25 +02:00
dylancaswell
35403b79d8 docs: fix list of devices that use a dedicated RFIC 2025-04-25 08:48:13 +02:00
Frank Dietze
d9afefedda ci: streaming: refactor streaming tests and utils 2025-04-23 15:31:12 +02:00
Wade Fife
8121e38a56 fpga: lib: Add synchronizer_sync_in module 2025-04-22 10:21:25 -05:00
Wade Fife
8493888c67 fpga: sim: Make members accessible in RfnocBlockCtrlBfm 2025-04-22 10:04:32 -05:00
Aki Tomita
7d09a833e9 ci: use agent env vars for some devices in rhombus 2025-04-20 20:50:24 -05:00
Jörg Hofrichter
65c9d3b1e7 ci: removed Fedora 39 builder 2025-04-17 16:01:52 +02:00
Jörg Hofrichter
4a61741d14 ci: added Fedora 42 builder 2025-04-17 16:01:52 +02:00
Friedrich Wenisch
1dd1447e9e fpga: x410: Fix NCO reset mechanism 2025-04-17 15:37:13 +02:00
Jörg Hofrichter
9b24fb84e2 ci: run rfnoc block tests before mender tests
This makes sure that the device is still in the same state
(regarding installed FPGA, network configuration, etc.) as for the
previously executed tests (host pytest, embedded pytest).
2025-04-16 13:37:41 +02:00
Max Köhler
060c007a12 fpga: ci: enable publishing of internal files 2025-04-16 10:14:27 +02:00
Martin Braun
50967d137f rfnoc_modtool: add: Add option to run make-yaml wizard 2025-04-15 17:47:51 +02:00
Martin Braun
9aae051512 rfnoc_modtool: Add make-yaml command 2025-04-15 17:47:51 +02:00
Jörg Hofrichter
8a35d7f6bf images: update FPGA images
Update FPGA images to commit da5c64b which uses the following
FPGA version numbers:

- E31X: 6.1
- E320: 6.2
- N3XX: 8.2
- X3XX: 39.3
- X4XX: 10.0
2025-04-15 09:58:06 +02:00
Martin Braun
82381c8dc7 rfnoc_modtool: Add 'input' and 'fork' commands to StepExecutor
- input: Query user input from the command line.
- fork: Spawn a different rfnoc_modtool command.
2025-04-15 09:49:42 +02:00
Martin Braun
dcad4ec43d rfnoc_modtool: Improve error handling for 'add'
- Added more log statements
- Check if the block descriptor file is even available, and exit with
  a readable message if not
- Allow for .yml and .yaml filename extensions
2025-04-15 09:49:42 +02:00
Martin Braun
4018e3a90b rfnoc_modtool: Improve step_executor
- When finding a list of files, check for duplicates and existence
- Create a StepError exception type, which makes it easy to exit the
  step sequence with nice logging
- Always make os available in mako resolution
- Add find_file step
- Improve error handling in parse_descriptor
- Improve log formatting compared to existing warnings or errors
- Refactor insert_after and insert_before (deduplicate code)
- Add warning when overwriting files with write_template
2025-04-15 09:49:42 +02:00
Martin Braun
92f502ddac rfnoc-gain: Fix bind_oot_file.py in gr-rfnoc_gain
When a re-bind occurs, the include paths in the binding file get
otherwise modified to rfnoc_gain/rfnoc_gain.h, instead of
gnuradio/rfnoc_gain/rfnoc_gain.h.
2025-04-15 09:43:53 +02:00
Martin Braun
fb06a82316 examples: rfnoc-gain: Add GRC examples dir
In a previous commit, these files where forgotten and are now added
back. This file is referred to in the CMakeLists.txt, so it is expected,
and its absence will cause a failure during installation.
2025-04-15 09:43:35 +02:00
Martin Braun
d659a024be modtool: Add log statements to 'create' and 'add'
This makes the output more cheerful and provides a confirmation of
success.
2025-04-15 09:43:18 +02:00
Martin Braun
ac758dfb42 modtool: Add 'log' subcommand
This allows printing logs from the YAML step definition.
2025-04-15 09:43:18 +02:00
Martin Braun
8684d3c15a rfnoc oot: Move fpga/ subdir into rfnoc/
During redesign of the OOT module directory layout, the block YAMLs and
dts files were moved under `rfnoc/`, but the gateware was not. This
causes an inconsistency in the directory layout before and after
installation, making it hard to switch between installed and
not-installed versions of RFNoC modules.

For example, block YAMLs are in `./rfnoc/blocks/*.yml`, and gateware is
in `fpga/gain/rfnoc_block_gain/*`. After installation, block YAMLs are
in `$PREFIX/share/uhd/rfnoc/blocks/*.yml`, and gateware is in
`$PREFIX/share/uhd/rfnoc/fpga/gain/rfnoc_block_gain/*` -- note the
discrepancy.

This fixes two immediate issues:

- When building the X410 example in-tree, the DTS file was not being
  found because it used the same finding logic as the gateware source files.
- When building any image core file post-installation, none of the
  gateware could be found because it used the same logic for finding
  gateware inside the OOT, which is in a different location relative to
  the block YAMLs.

By removing the inconsistencies, both these use cases work.

A note on backward compatibility:

- Existing OOT modules already have the issue that building bitfiles
  post-install does not work, and that will continue to not work.
  However, otherwise, they will keep working as before.
- Because people may have gotten accustomed to specifying the RFNoC OOT
  module as the include directory (e.g., `rfnoc_image_builder -I
  /path/to/rfnoc-gain`), we allow for this use case, and auto-correct
  the include path in this case with some backward compatibility code.
- Building the rfnoc-gain/icores/x410_XG_200_rfnoc_image_core.yml
  example image core file now also works, even with older versions of
  rfnoc-gain.
2025-04-15 09:43:04 +02:00
Frank Dietze
332646f91f ci: docker: set global pip index by pipeline variable 2025-04-15 08:40:40 +02:00
Volkan Öz
3eb6f3597b mpm: ZBX: Allow reading top and bottom temperature sensors
ZBX already exposed a temperature sensor: `temperature` which
returns the mean value of the top and bottom temperature sensors.

Add sensors `temperature_top` and `temperature_bottom` for
reading the values of the temperature sensors separately.
2025-04-15 08:33:58 +02:00
Martin Braun
2f5136c9e9 deps: Remove BOOST_VERSION checks
The checks are all covered by our CMake Boost checkery.
2025-04-15 08:29:36 +02:00
Martin Braun
3fb9555bee deps: rpclib: Remove dependency on __cplusplus value
In some cases, rpclib uses the value of the `__cplusplus` macro to
determine implementation details. We remove these, as UHD requires C++17
anyway now and the value of __cplusplus may be broken depending on
compilers.
2025-04-15 08:29:36 +02:00
Marian Koop
4d59a22cf9 ci: devtest: Use unique agents for x3xx and b2xx devtests 2025-04-14 09:06:55 +02:00
Jörg Hofrichter
640fdd0bed mpm: xportmgr_udp: Set SNAT rule for outgoing CHDR packets
MPM configures a DNAT rule for incoming CHDR packets which
forwards the packets to the FPGA via the internal network
interface.

For CHDR packets coming back from the FPGA, the DNAT rule
translates back the IP address to the external IP address
but only within 30 seconds after the incoming CHDR packet.
The reason for this is the connection tracking (conntrack)
timeout which typically defaults to 30 seconds for UDP
connections in the absence of bidirectional traffic.

To ensure that forwarding of CHDR packets works in all cases,
this commit adds a SNAT rule.

Iptables NAT rules before the change:

# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       udp  --  anywhere             anywhere             udp dpt:49153 to:169.254.0.2

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

Iptables NAT rules after the change (192.168.10.2 is exemplary,
it corresponds to the IP address of the eth0 interface):

# iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       udp  --  0.0.0.0/0            192.168.10.2         udp dpt:49153 to:169.254.0.2

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       udp  --  169.254.0.2          0.0.0.0/0            udp spt:49153 to:192.168.10.2
2025-04-11 13:21:06 +02:00
Martin Braun
1d1b3fda9e ci: Add modtool tests to FPGA library changes 2025-04-10 09:19:04 +02:00
Markus Schill
da5c64bf4f fpga: lib: Add initial value to ram_2port 2025-04-09 13:50:17 -05:00
Marian Koop
4025a4fa7e host: util: b2xx: Extend private init-device function to require SN input
Extend private init-device function to require parameter additional
write-serial parameter to ensure device can return a serial number
to Window 10+ after device enumeration.
Add private functions to erase eeprom map content, and to dump full
eeprom content into a file.
Created local function to check eeprom revision to remove code
duplications.
2025-04-09 18:29:31 +02:00
Frank Dietze
77e943779b ci: streamingtest: enable verbose logging to interface setup 2025-04-08 21:51:07 +02:00
Frank Dietze
4fbec36c0d ci: streamingtest: add timeout to step setup interfaces 2025-04-08 21:51:07 +02:00
Wade Fife
19b5c85b51 fpga: lib: Fix pass-through mode in axi_fifo
A missing "else" after 6ea4e48 was causing two configurations to occur
at the same time for some values of SIZE.

This commit also sets the "space" and "occupied" outputs to 0 when in
pass-through mode.
2025-04-08 12:26:02 -05:00
Wade Fife
7992198889 fpga: sim: Restore PkgChdrUtils for compatability
This brings back the package PkgChdrUtils after it was removed in
d9f8c08. Its contents were moved because most of the contents were
synthesizable, but many existing testbenches might still reference the
old package name. This new version of PkgChdrUtils simply imports then
exports the things it used to include. New testbenches are encouraged
to reference the new files instead of PkgChdrUtils.
2025-04-08 12:24:51 -05:00
Martin Braun
7597564542 rfnoc: Fix testbenches for OOT modules
This is an addition to d9f8c08, in which testbench-related code was
moved. The RFNoC testbenches were all updated, but not the OOT-related
testbenches (in rfnoc-gain, and in the OOT templates).
2025-04-07 16:11:20 +02:00
Jörg Hofrichter
bf5b8867af image builder: check the validity of the --target parameter 2025-04-07 11:45:18 +02:00
Max Köhler
a323d55cf7 ci: trigger mono pipeline on FPGA changes 2025-04-07 09:22:41 +02:00
Jörg Hofrichter
084329d24f ci: re-introduce uhdFpgaArtifactSource parameter for test pipelines 2025-04-06 13:21:37 +02:00
Martin Braun
6ef4e4c9eb rfnoc: Make e31x the default device for OOT modules
The E31x has the advantage that it can be targeted from the free tier of
Vivado, which means users can start writing blocks and running
testbenches without having to purchase a Vivado license. This is already
possible today by specifying -DUHD_FPGA_DEFAULT_DEVICE=e31x when running
cmake, but we think this will further lower the entry level for RFNoC
developers by making the free-tier option the default.
2025-04-04 15:28:05 +02:00
Wade Fife
ff12e4a2fd fpga: lib: Update FFT IP for parallel builds 2025-04-04 08:11:57 -05:00
Sam Lane
13d004fa90 fpga: tools: Add assert option to synthesis
Add -assert option to Vivado synthesis to allow VHDL assert statements
to be checked during synthesis.
2025-04-03 11:01:14 -05:00
Wade Fife
9dc2e089d8 fpga: tools: Fix escape sequence warnings
This adds to 11c60ee to fix a few additional escape sequence warnings.
2025-04-03 09:51:54 +02:00
Jörg Hofrichter
4ed588ab3c ci: utils: set fixed dependency versions to avoid breakages 2025-04-03 09:50:08 +02:00
Abhishek Verma
7615602b7c examples: tx_waveforms: improved comments and help
Improving user experience with examples.
- added example's functionality and intent in --help
- added each arg help description in --help
- added summary to each function module
- added more prints in during operation
2025-04-03 08:17:23 +02:00
Michael Cho
2725c664ce examples: update for upcoming Boost 1.88.0
Boost.Process 1.88.0 will make `boost::process::v2` the default which
breaks compilation of rx_samples_to_file.cpp. This change uses v1
headers and inline namespace to fix build.
2025-04-02 10:50:48 +02:00
NI\asalman
fef432b75a host: default to rw regs in get_changed_addrs() 2025-04-02 09:26:26 +02:00
Max Köhler
22b4a35da2 fpga: x4xx: add reset option for gearboxes 2025-04-02 08:02:11 +02:00