Commit Graph
551 Commits
Author SHA1 Message Date
Martin Braun 1a3bdccd51 Revert "Get rid of unnecessary bash wrappers in subprocesses.Popen"
This reverts commit e572bab3ee5aa40f57bdc6e11d6381cad1d1401a.

The problem with skipping the "unnecessary" bash wrappers is that Ubuntu
systems use 'dash' as a default shell, which does not support our build
infrastructure. While we do recommend not using dash for building FPGA
builds in our documentation, it's not obvious that dash is the problem
when calling rfnoc_image_builder.


Original-commit: 888850d6417c93f561e0555c693e3f11e9f40856
2025-02-20 10:24:16 +01:00
Wade Fife bb2bfbfe95 fpga: lib: Add AXI-Stream load split and merge modules
Original-commit: 32fb626ef1b1d3078fd331143b03cd38d1e155f0
2025-02-14 15:59:19 -06:00
Wade Fife 72432c9278 fpga: lib: Add zero-length option to axi_fifo
Original-commit: 6ea4e4808e09e55bb2ba05e787e79ec3c5fe4340
2025-02-14 15:59:19 -06:00
465be512e7 fpga: Ensure RX radio command FIFO does not overflow
Radio command FIFO will back pressure commands until there is room
for new elements.

Co-authored-by: Max Köhler <max.koehler@ni.com>
Co-authored-by: Martin Braun <martin.braun@ettus.com>


Original-commit: 474a17020e649e9ae4a39ef7cbce810d0ec67983
2025-02-14 09:22:33 -06:00
Max Köhler f961936a43 rfnoc: lib: introduce ctrl-port interface and BFM
Original-commit: 886cf97ad5d494b20c6fff0a53113f6096d458c7
2025-02-14 08:04:26 -06:00
Max Köhler c48f8bd5f1 fpga: rfnoc: lib: add AXI FIR filter for >1 SPC
Original-commit: 90ad1fecb62b804f543def6e4c680706d76442b5
2025-02-13 08:28:46 -06:00
Max Köhler 7446db939c fpga: x440: fix refactored rf_core_full
Original-commit: f1fab29e4444476378faa8d435c1f76faa5a702c
2025-02-13 07:58:10 -06:00
Friedrich Wenisch 3ed06cc861 fpga: x400: refactor RFDC block diagrams and timing constraints
Original-commit: a7bce74be154de9a68d6bdf2f9a6651b480b6dfa
2025-02-13 07:51:05 -06:00
Wade Fife f480008cf9 fpga: rfnoc: fft: Use DEFAULT on reset in axis_cp_list
Original-commit: 2eba2e9303d84e1a66f9841f894d526f62d91901
2025-02-12 22:06:20 -06:00
Wade Fife ac04bb81c4 fpga: sim: Allow DATA_WIDTH that's not a multiple of 8
Original-commit: f1173f14d18feb5fb40285b393d0d5bc286acd17
2025-02-12 22:06:20 -06:00
Wade Fife 30180c36f0 fpga: rfnoc: Add CHDR_HEADER_W constant
Original-commit: eaee884576883f930e5dcac6b034646be6fbedf2
2025-02-12 22:06:20 -06:00
Wade Fife c637f538fa fpga: lib: Add TO_SIGNED to usrp_utils.svh
Original-commit: c4eaadfaca97490d68f7b4702f009eb50252d0dc
2025-02-12 22:06:20 -06:00
Wade Fife a11618f3e9 fpga: sim: Add get methods for stall probability
Original-commit: 2330a5e016e66be6d5f4e053a6265fdad212a3e5
2025-02-12 22:06:20 -06:00
Wade Fife 39529a180d fpga: sim: Remove unused stall arguments
Remove unused stall_probability arguments from
get_master_stall_prob() and get_slave_stall_prob().


Original-commit: 80db09235b5fa0cd4259c80c3a094435b519a752
2025-02-12 22:06:20 -06:00
Max Köhler c12766fd4d fpga: x400: bump FPGA compat version to 9.0
Original-commit: 85ef95fd85f5fdd0eb8b7792443bf3b9ce4728cf
2025-02-12 14:38:08 +01:00
mschill 4ae2f8eb5e fpga: x400: Update SYSREF Delay and capture mechanism
Together with an update to the LMK04832 register config according to
TIs data sheet, all clock outputs are now aligned to SYSREF rising edge.
Therefore, I needed to adjust the SYSREF capture mechanism inside the
RFSoC and the SYSREF LMK Delay.
SYSREF is now captured first at the falling edge of PRC.
To be on the safe side, we are still double synchronizing SYSREF
afterwards on the rising edges of PRC.

As we are now independent of any MCR regarding timing constraints the
SYSREF Delay is also set to '0' for all X4xx devices.


Original-commit: b5cb4fac42ab530174e108455b730ffa1510d70a
2025-02-12 14:38:08 +01:00
Wade Fife f19fa3cf82 fpga: rfnoc: Fix info FIFO overflow
In cases when the info FIFO fills, it was possible for
in_pkt_info_tvalid to be asserted then on the next cycle
in_pkt_info_tready would deassert, in which case the input would be
dropped. This change ensures that tvalid remains asserted until tready
deasserts.


Original-commit: 6d2e9f983ae94d2e1e6866c34b3c87374a349631
2025-02-11 12:30:50 -06:00
Max Köhler 4db1e1e86f fpga: lib: remove reset on non-control signals of ctrlport modules
Original-commit: 8bdca548d1cec4c8ced3edb3c3c2ea7addc4f6e3
2025-02-11 11:20:12 -06:00
Max Köhler be25e4da1b fpga: rfnoc: radio: move arithmetic away from timestamp for timing
Original-commit: 7a3fc743375f065c38f9d6aa3fff43d67cc6b0e0
2025-02-10 16:47:54 -06:00
Markus Schill 0f431ebdd5 fpga: lib: Update simple_spi_core documentation
Original-commit: 65ba3dc518759804d14fa7b18cb374ccccb7a63c
2025-02-10 16:46:53 -06:00
Wade Fife 285f7b26a1 fpga: rfnoc: radio: Improve underflow handling
The TX radio will normally transmit a late not-timed packet when an
underflow occurs between packets within a burst. However, if it was
only one cycle late, then the packet would be dropped. This change
rearms the state machine more quickly in this corner case to allow
this late packet to be accepted. The underflow error will still be
reported.


Original-commit: 9faac6597cf21ca11e40d4e98797cea2848c40b0
2025-02-07 08:56:18 -06:00
Martin Braun 4d5cad3310 fpga: tools: Refactor viv_ip_xci_editor.py
This Python utility was getting a bit rotten. The following updates
where made:

- Reformatted using ni-python-styleguide
- Fixed formatting of regex strings by declaring them 'raw'
- Updated docstrings and any linter issues

On Pyton 3.12 and beyond, this will no longer throw SyntaxError
warnings.


Original-commit: 0dede88c6535ae6ffb30b162c83dc01d59d3bfa0
2025-02-07 14:52:28 +01:00
Martin Braun 8e0831b348 fpga: Remove vivado_lab support
Previously, the build tools for the FPGA bitfiles would try and
autodetect the Vivado executable, but would allow for a `vivado_lab`
executable. However, Vivado Lab Edition can't build bitfiles nor run
testbenches. Its only use with the USRP FPGA build tooling is to run
`viv_jtag_program` and `viv_jtag_list` (which are command-line proxies
for probing FPGAs attached to JTAG, and for programming bitfiles over
JTAG, e.g. to an X3x0).

When Vivado Lab and Vivado were present, it was possible that we ran
into issues where Vivado Labs would be preferred, and then builds or
testbenches would fail.

We therefore remove the ability to use Vivado Lab. Running the Vivado
Lab Edition with the GUI, and loading and probing bitfiles is of course
still possible, but tools like `rfnoc_image_builder` can no longer
accidentally try to use Vivado Lab instead of regular Vivado.


Original-commit: 21c4c591a51d520c7aac7108e853e59c4953f953
2025-02-06 16:45:15 +01:00
Max Köhler b016b90dbc fpga: x400: avoid false PPS rising edge on switching sources
Original-commit: d5876c82a02f7800141b74517d0b5461946de9fc
2025-02-05 16:56:54 -06:00
Max Köhler 40ce83817a fpga: lib: add register stage in ipv4 chdr adapter
Original-commit: 2b9504d84d8f8e5dd7156498b4c8b5db5a2c84da
2025-02-05 09:14:26 -06:00
Frederik Pfautsch 8aefaa7582 Get rid of unnecessary bash wrappers in subprocesses.Popen
Signed-off-by: Frederik Pfautsch <frederik.pfautsch@missinglinkelectronics.com>


Original-commit: e572bab3ee5aa40f57bdc6e11d6381cad1d1401a
2025-02-03 21:51:38 +01:00
Max Köhler f4b6def040 fpga: x400: refactor 100GEth LBUS to AXI interface
Original-commit: a218a6a503e5e4baddb939affa57b5c960ffbc84
2025-01-31 09:08:03 -06:00
Max Köhler 067f150b75 fpga: tools: mark hash dirty with staged changes
Original-commit: d635ee91fb34fa1fbb0c70a23337f4ea5a05cc1f
2025-01-29 11:37:22 +01:00
Max Köhler 8d46198250 fpga: tools: Add --build-dir to repeat_fpga_build
Original-commit: 1d1c889c15b407c2dcc5c509e3dab59aa45320e8
2025-01-27 15:32:22 -06:00
Max Köhler 52cc1735fd fpga: lib: simplify timing in pulse stretch
Original-commit: 2a3520b068456f1fdd291d4f8b0165e435a21757
2025-01-23 19:18:48 -06:00
Wade Fife edfe117b9c fpga: rfnoc: fft: Fix tready on magnitude path
The tready signal that was used when EN_MAGNITUDE equals 0 was not
correct. This commit allows EN_MAGNITUDE to be disabled.


Original-commit: ef449523df61268d4efbc86a12cb098c2b2bf239
2025-01-20 09:43:35 +01:00
Max Köhler ccdefb0c34 fpga: x400: add CMAC placement constraints
Original-commit: 3c8fee9c28cabb6ffdb369ca914828b1bf59884e
2025-01-17 13:56:29 +01:00
Wade Fife 81f150213f fpga: rfnoc: Add new FFT block
This replaces the legacy RFNoC FFT block with a new one of the same
name that includes a superset of the original features. New features
include cyclic prefix insertion or removal and FFT sizes up to 64k.


Original-commit: 25fffb006755b2e91f0138eb4af3ab9e16b8690c
2024-12-17 22:13:42 +01:00
Wade Fife 0770fd4405 fpga: lib: Add axis_sideband_tuser
Original-commit: 1549f95dc5c06d006499c30560184338c17a389e
2024-12-17 22:13:42 +01:00
Wade Fife 8f64fb2ee8 fpga: lib: Add axis_split_bus
Original-commit: f2a9c389d35697bd2e98fb05ffe3c66dcb179e65
2024-12-17 22:13:42 +01:00
Wade Fife d95d0252e0 fpga: lib: Add axis_combine
Original-commit: ab19d99cb0b4b74327bc31ecb5bc27ffcf94dec0
2024-12-17 22:13:42 +01:00
Wade Fife 06c18110ce fpga: lib: Add axis_data_if_packetize
Original-commit: ec91debff5c29d5e0fe92bc40ec553e4d4294a69
2024-12-17 22:13:42 +01:00
Wade Fife d46b94f233 fpga: lib: Add Xilinx FFT IP for various configurations
Original-commit: d96546d6391d10844e6ce0abd2e7e190b738365a
2024-12-17 22:13:42 +01:00
Wade Fife 4f99fee248 fpga: lib: Add complex_to_magphase_int17 IP
The underlying Xilinx CORDIC IP uses 2 bits for the whole part of its
(X,Y) inputs and its magnitude output. So, having 17 bits means we have
enough precision to represent the entire range of an sc16. The 16-bit
CORDIC is insufficient to cover this entire range.


Original-commit: 0d3d69493aac9239ae437b04f291c61669678606
2024-12-17 22:13:42 +01:00
Wade Fife 7e792d4a25 fpga: rfnoc: Add SV packages for use with RFNoC
Original-commit: c2b8eb4a88534230ce31dd4d40e4c069644c4d10
2024-12-17 22:13:42 +01:00
Wade Fife 48d8e384b6 fpga: lib: Add usrp_utils.svh with common macros
Original-commit: 079fbe528347fd4a2fd01064b30d2096f7e7b476
2024-12-17 22:13:42 +01:00
Wade Fife 82e1da1b78 fpga: lib: Cleanup axi_demux module
- Add documentation
- Add generate block labels
- Remove tabs and fix indentation
- Separate the code into three logical sections


Original-commit: 76074ecb319bf770805374b81c966b94cba898c5
2024-12-17 22:13:42 +01:00
Wade FifeandJörg Hofrichter 965c13e861 fpga: tools: Add JUnit XML support to run_testbenches
Co-authored-by: Jörg Hofrichter <joerg.hofrichter@emerson.com>


Original-commit: f1ef9ada680dd6e8ca600d3c01551b0d1b6f52a5
2024-12-11 09:08:11 +01:00
Wade Fife 5a9d9a1eb2 fpga: tools: Add --ignore-warnings to repeat_fpga_build
Original-commit: 381ecf857852a5184402b20d82d8b19f2188f434
2024-11-27 19:35:33 -06:00
Joerg Hofrichter 5cbd981c3e fpga: x4xx: assemble x410/x440-version-info.dtsi in BUILD_DIR
Original-commit: 0a635d0d11b52b300474cb2871f54a1a5458647c
2024-11-22 08:00:03 +01:00
Max Köhler 2a89218e95 fpga: x400: add rf core ctrlport
Original-commit: a9add0a6a5baefe7dcc8fbb5a39f01dc935c7a3e
2024-11-12 15:57:36 -06:00
Martin Braun f07af03214 image builder: Use RADIO_NIPC parameter
This simplifies image core files by generating a RADIO_NIPC parameter
for the X410, X440 and E31x BSP files. The IO port widths for X410 are
now dynamically widened based on the NIPC value, which is a function of
the RF_BW parameter, and cannot be modified.

The radio block can now read the NIPC value from the BSP, and populate
its spc parameter dynamically. This avoids having to know the right spc
value when writing YAML image core files and reduces redundancy.

This also removes the RADIO_NIPC parameter entirely from all the image
core files. This parameter was fine, but it was a bit confusing because
it referenced a Verilog parameter, which you just had to know was there
in the generated Verilog. By referencing the BSP parameter instead, the
YAML files (BSP, radio.yml, and image core file) are now self-contained
regarding the RADIO_NIPC/spc information.

As a minor upside, the input wire widths for X410's and N310's
rfnoc_image_core.sv module are now generated with the correct widths,
and not, as before, with the worst-case width (and then we assume Vivado
will do the right thing).


Original-commit: 53b4d7a21018fe7aabf9f774260aefb41297a41b
2024-11-05 15:30:50 +01:00
Wade Fife 23b44d6538 fpga: tools: Add do file for ModelSim
Original-commit: 99982799869267550844d34a64fe82dfb1aaa79d
2024-10-08 18:15:52 -05:00
Wade Fife 775f1330bc fpga: tools: Add parallel FPGA build support
Add parallel FPGA build support to repeat_fpga_build.py.


Original-commit: b6ce5671f89cd10107b0f83524c4fd86a0a358b6
2024-10-07 11:04:13 -05:00
Max Köhler a460c3ca2c fpga: tools: add diamond build sanity checks
Original-commit: aa10241c7f034739da8905f862beaf0f31d286ed
2024-09-24 10:24:29 -05:00