Commit Graph

12274 Commits

Author SHA1 Message Date
Max Köhler
1e80ef2fe9 fpga: lib: Upgrade to Vivado 2025.2 2026-09-29 09:09:08 +02:00
Max Köhler
edac52a8d9 fpga: tools: Upgrade to Vivado 2025.2 2026-09-29 09:09:08 +02:00
Max Köhler
626bcb32ea ci: Upgrade to Vivado 2025.2 2026-09-29 09:09:08 +02:00
Javier Valenzuela
34a43948aa fpga: b310: add synchronizers on async inputs 2026-09-28 23:35:16 -05:00
Javier Valenzuela
ef0a814a3d fpga: lib: fixup uart non-blocking assignments 2026-09-24 08:56:44 +02:00
Javier Valenzuela
7351887ab5 fpga: lib: fixup i2c non-blocking assignments 2026-09-24 08:56:44 +02:00
Javier Valenzuela
04a7f8c6bf fpga: lib: fixup simple_uart instantiation 2026-09-24 08:56:44 +02:00
Grant Meyerhoff
c6e4c50945 tests: replace .format() usage with f-strings 2026-09-22 15:19:41 +02:00
mhallada
9f8defc537 ci: Enable EVM test for x410-x4-400 pipeline job 2026-09-22 15:18:50 +02:00
Grant Meyerhoff
66c66a4d2b devtest: use tx eob ack timeout for benchmark_rate 2026-09-22 15:13:03 +02:00
Grant Meyerhoff
4eeee62aad examples: optionally wait for Tx EOB on benchmark_rate 2026-09-22 15:13:03 +02:00
Grant Meyerhoff
8720fe87ec ci: download b3xx images rather than hardcoding 2026-09-22 10:00:45 +02:00
Abhishek Verma
633782b405 rpc_server: return UNAVAILABLE for RPCs during device reset
Treat a RuntimeError raised while the periph manager is resetting as
transient. Log once at WARNING and abort with gRPC status UNAVAILABLE
so the client retries, instead of logging a scary ERROR.
Real runtime errors still log ERROR and abort when periph manager
object is live.
2026-09-18 16:18:00 +01:00
Max Köhler
3fe3610eb8 fpga: ci: add b310 option to FPGA pipeline 2026-09-18 16:16:53 +01:00
Max Köhler
3f46b68c6d fpga: lib: disable clocks at startup for ddc_ms_tb 2026-09-18 16:15:40 +01:00
Grant Meyerhoff
50a47f75de b300: fix GPS timepulse polarity 2026-09-18 16:14:09 +01:00
Abhishek Verma
6e11078807 mpm: net.py: optimize netlink ops to fix RPC starvation
usrp_hwd runs all gRPC greenlets on a single gevent hub, so any
non-yielding C call blocks every other RPC. Under a uhd_find_devices
discovery flood, the GetDeviceInfo interface enumeration run long enough
And may starve most claimed RPC past its default 2s client deadline,
causing "Deadline Exceeded" failures.

Three places that this commit optimizes, all in net.py:

- get_local_ip_addrs() used pyroute2 IPDB, which spawns helper threads
  and mirrors the full link/addr/route/neighbour tables on every call
  (~100s of ms, non-yielding) --> Replace it with a single stateless
  IPRoute get_addr() dump. Keep IFA_LOCAL (falling back to IFA_ADDRESS)
  so the returned set matches IPDB's behaviour, including point-to-point
  links.

- get_link_speed() used to create a new pyudev.Context() per interface,
  which forks on creation, tripping gRPC's fork handlers. gRPC then
  freezes all workder threads and restarts after fork is done. Fix is to
  reuse one PID-guarded pyudev context per process.

- get_valid_interfaces() did an O(N) netlink round-trip per interface.
  This stalls gRPC server. --> Dump all links and IPv4 addresses once
   and filter in Python.

IPRoute stays per-call: it opens its own netlink socket and does not
fork, so there is no shared state to lock.
2026-09-18 16:12:41 +01:00
Max Köhler
cf14224aa6 fpga: tools: skip phy_opt step for partially routed designs 2026-09-18 16:08:29 +01:00
Max Köhler
ec32eb04ec ci: do not use publish permission for usrp4-hw 2026-09-18 16:07:14 +01:00
Max Köhler
a76ab6ffc9 Revert "ci: usrp4 sim: only run this stage if source is not master"
This reverts commit 879ed08bb1.
2026-09-18 16:07:14 +01:00
Max Köhler
99fe17071f image builder: find FPGA path from Git repository root 2026-09-18 16:05:51 +01:00
TalFel
2feedf3338 multi_usrp: set_master_clock_rate function now sets duc/ddc rates
RFNoC's `multi_usrp` did not fully propagate `set_master_clock_rate()`
to the DUC/DDC chain.

Before this change, `set_master_clock_rate()` updated only the radio
rate. If a channel had a DUC or DDC, the adjacent converter rate was
left stale:
- TX: the DUC output rate was not updated to the new radio rate
- RX: the DDC input rate was not updated to the new radio rate

That caused follow-up `set_tx_rate()` / `set_rx_rate()` calls on the
same `multi_usrp` object to operate on outdated DUC/DDC state. In
practice, after changing the master clock, setting the channel sample
rate could be coerced unexpectedly because interpolation/decimation was
derived from the old converter-side rate.

This change updates `multi_usrp_rfnoc` so that `set_master_clock_rate()`:
- propagates the new radio rate to the attached DUC/DDC
- reapplies the previously requested per-channel TX/RX rate so the
  DUC/DDC continues to follow the user-requested sample rate

Note that property propagation by itself is insufficient here, because
multi_usrp_rfnoc caches RX and TX rates, and these caches require
manual updating.

Co-authored-by: Martin Braun <martin.braun@ettus.com>
2026-09-18 15:51:09 +01:00
Frank Dietze
a48ccdb0a0 ci: mutex_hardware: remove vivado_dir parameter 2026-09-17 18:40:18 +02:00
Frank Dietze
2fa91b605a ci: replace static obx rftest parameters by variables 2026-09-17 18:40:18 +02:00
Wade Fife
5ff8ca11f3 fpga: b310: Use a resources file for RFNOC_OOT_SRCS
Use a resources file to pass RFNoC OOT source files to Vivado TCL
scripts, avoiding ARG_MAX argument list limits.

This makes B310 consistent with other USRPs that were previously
updated in commit fa7c3604.
2026-09-16 09:59:04 -05:00
Wade Fife
ddb7e6866b fpga: tools: Make each BUILD_SEED random
Use --seed only to initialize a local deterministic random number
generator. Generate a new signed 32-bit BUILD_SEED for each FPGA build
attempt instead of passing --seed directly to the first build. This
avoids accidentally using sequential pipeline attempt numbers as
BUILD_SEED values.

Using the same --seed produces the same BUILD_SEED sequence, preserving
reproducibility.
2026-09-16 09:53:50 -05:00
Max Köhler
15283f106b fpga: tools: add target matrix generator script 2026-09-15 23:55:20 +01:00
Marian Koop
5e9888c204 cmake: Bump master to 4.11.1 2026-09-15 23:47:53 +01:00
Niels Garibaldi
aaaca5bff9 fpga: dsp: add FSM for HB FIR temporal decimation
Added a state machine to fix a bug in the temporal decimation code
of the decimating halfband filter module.

Additionally added a testcase to the testbench for the issue this
change is fixing.
2026-09-15 23:47:05 +01:00
Niels Garibaldi
58ab7a88cc dsp: cic: Add FIFO in CIC decimation to allow tready bypass
Added a Fifo to bypass handshaking inside of the cic filter decim
data pipeline.
2026-09-15 23:47:05 +01:00
Max Köhler
5b1bcabcf8 fpga: dsp: register halfband cascade routing selects 2026-09-15 23:47:05 +01:00
Max Köhler
e5c05cfde1 fpga: dsp: flush stale data across reset boundaries 2026-09-15 23:47:05 +01:00
Max Köhler
c1540c92f1 fpga: dsp: simplify interpolation and decimation configuration 2026-09-15 23:47:05 +01:00
Max Köhler
b7a92cd9d9 fpga: dsp: block input during reset and reconfiguration 2026-09-15 23:47:05 +01:00
Max Köhler
efa47018e4 fpga: dsp: distribute reset and clear through DSP paths 2026-09-15 23:47:05 +01:00
Max Köhler
d394ae626a dsp: cic: Add FIFO in CIC interpolation to allow tready bypass 2026-09-15 23:47:05 +01:00
Max Köhler
5ea031a946 fpga: lib: dsp: add multicycle path for CIC barrel shift 2026-09-15 23:47:05 +01:00
Niels Garibaldi
9365ae9b6a fpga: dsp: reverse order of cic barrel shifter
Reversing the order of the barrel shifter module used by the CIC
filter implementations, in order to reduce the possible bits
selectable from the last stage going into the rounding module.
This should make routing easier.
2026-09-15 23:47:05 +01:00
Niels Garibaldi
4904d06da2 fpga: dsp: Reduce CIC comb bus width for cic_filter_interp
We can reduce the bus width of the comb filter stage in the CIC
interpolation filter, as it is the first module in the CIC filter and
only adds one bit per order stage. Therefore, we do not need to
immediately go to the full accumulation bit width needed for the later
integrator stages of the CIC interpolation filter, and can save some
FPGA resources by only extending to the required width for each CIC
stage.

The same logic also applies to the interpolation stage, which only adds
zeros into the bitstream and therefore does not change the bus width.
2026-09-15 23:47:05 +01:00
Niels Garibaldi
57df0ca685 fpga: dsp: Add FIFO_SIZE parameter to CIC comb filter
Adding a FIFO size module parameter to the comb filter module, in
order to selectively set only the last of N-order filter stages to
use a 2-stage FIFO.
2026-09-15 23:47:05 +01:00
Virendra Kakade
285cce69a2 ci: Build UHD RPMs with B310 support
Install nib310rio-dev before configuring the Fedora RPM installer build.
The RPM path runs CMake directly in the build container, so installing the
development package there makes nib310rio/nib310rio.h available when UHD
decides whether to enable B300 support.
2026-09-15 23:44:29 +01:00
Virendra Kakade
eb785ff23b ci: Build UHD DEBs with B310 support
Add nib310rio-dev to the Debian build dependencies so the UHD package
build fails if the B310 userspace header is unavailable instead of
silently disabling B300 support.

The Ubuntu installer pipeline downloads the nib310rio Debian package
artifact and exposes it to pbuilder as a local apt repository. This lets
pbuilder satisfy the new dependency inside the clean build root where
CMake checks for nib310rio/nib310rio.h.
2026-09-15 23:44:29 +01:00
Marian Koop
0d7ed3b1a4 images: Update to final 4.11.0.0 release candidate 2026-09-08 10:24:37 +01:00
Marian Koop
6fbadafde6 cmake: Update stable branch property 2026-09-08 10:24:37 +01:00
Marian Koop
c57e8cb30d doc: Extend x4xx loading the fpga image section. 2026-09-08 10:06:38 +01:00
Martin Anderseck
72d896bd25 CHANGELOG: Correct and update UHD 4.11 features
This adds the Linux kernel update as highlight and corrects the
statement about the X420/X440 repeatable phase offsets.
2026-09-08 09:28:31 +01:00
Jörg Hofrichter
d687c4ebbe host: mpmd based uhd_image_loader: prefer .bin files
Prefer .bin over .bit files when loading FPGA without full
FPGA path name. This changes the order which was introduced
with commit 2618b51cb8.
2026-09-08 09:27:55 +01:00
Michael Dickens
6cb889675f python: add range property tree access 2026-09-08 00:02:36 +01:00
Lars Amsel
9e8b5b9553 examples: Fix l-band capture setup
Because X440 images now can also contain DDC/DUC we cannot direct
connect the radio with the replay block anymore. Instead we have
to rely on the uhd.rfnoc util connect_through_blocks function
which will find a route through the statically connected DDC/DUC
if they are present or connect the SEPs directly if they are not.
2026-09-07 17:06:06 +01:00
Grant Meyerhoff
4caf56aa0d docs: b300: add more complete multi-device sync docs 2026-09-07 17:03:43 +01:00