Commit Graph
571 Commits
Author SHA1 Message Date
Max Köhler 14e864bdb1 fpga: x440: bring back TX control remap in RFDC BD
Original-commit: e4cbbe71452b269d8272ff7b1c7658523acfff4f
2025-03-25 07:50:14 +01:00
Max Köhler 88d7598bfc fpga: x400: zbx: update projects for new ctrlport modules
Original-commit: 95e227edaaacc3eb68937cebcc2ba385eb0997a2
2025-03-21 09:09:09 -05:00
Max Köhler 01d6ebd45e fpga: x400: cpld: update projects for new ctrlport modules
Original-commit: 6bcb44df7b94970cdbdb724987e27d5f306c40a7
2025-03-21 09:09:09 -05:00
Max Köhler 8dc5d3aeec fpga: lib: redirect old ctrlport modules to interface based ones
Original-commit: bf294111b9f49efb6373908274bc8d31bb8cb11d
2025-03-21 09:09:09 -05:00
Max Köhler e67d78533c fpga: bump compat number to 10.0
Original-commit: 1cb4898519dfc2661c4537ec06faa23ed4525329
2025-03-20 09:07:06 +01:00
Max Köhler 50f20ef4ab fpga: x4xx: replace ADC/DAC info by RFDC memory
Original-commit: 6c6d52fd655b144aa5ee581edae7911dc734854e
2025-03-20 09:07:06 +01:00
Wade Fife 37b8b0d017 fpga: rfnoc: Move synthesizable code from sim to lib
Original-commit: d9f8c08dfb1afe98c35c5911125c6eead869713f
2025-03-17 17:47:16 -05:00
Wade Fife b4943f4a61 fpga: tools: Disable common simulation warnings
This change sets StdArithNoWarnings and NumericStdNoWarnings by
default for ModelSim simulations. Without this, an excessive number of
warnings can be generated by Xilinx IP during simulation.


Original-commit: f094aa7ae0f864764276c5c67c51b21547327fb0
2025-03-17 13:40:26 -05:00
Wade Fife 6bcbd09a6b fpga: tools: Change -onfinish to final
This changes the -onfinish setting from "stop" to "final" for Questa
and ModelSim. The "final" setting is required so that SystemVerilog
final blocks run. This also has the same effect as "stop" in that it
won't ask you in the GUI if you want to exit the simulator when
$finish() is called.


Original-commit: 7ab4e9a4e2c0408ca595ad168199a54bf416c894
2025-03-17 13:40:26 -05:00
Wade Fife 37fb9138cd fpga: tools: Add support for Questa
Original-commit: 247f9fd2ac8b0a9905a9b587caf9d57b6bacd82a
2025-03-17 13:40:26 -05:00
Wade Fife c499cad53d fpga: tools: Fix issues in run_testbenches.py
This commit addresses several issues that can occur with different
simulators. It changes the following:

- Update documentation
- Ignore testbenches in build-ip folders
- Tolerate extra lines in the testbench results regular expression
- Match numbers using \d instead of + to avoid ValueError exceptions
- Only fetch the start_time if it exists
- Allow any simulator make target (don't limit it to specific choices)


Original-commit: 81ccd8cb5154e85636cddd86c466daffb4ab4ebe
2025-03-14 08:03:34 +01:00
Wade Fife 6b19ec030c fpga: rfnoc: fft: Support multiple samples per cycle
This adds the NIPC parameter, which configures support for processing
multiple items or samples per clock cycle. With this enabled, the FFT
block can process at rates higher than 250 MSPS, such as 500 MSPS and
beyond.


Original-commit: fc76aa940e121fe1f85a3513f6d90df4667338cf
2025-03-07 12:39:34 -06:00
Wade Fife d7e5823047 fpga: rfnoc: fft: Add FFT packetize modules
Original-commit: 97ea89fac5c1889e5c0da44349d5f4be3d788965
2025-03-07 12:39:34 -06:00
Wade Fife ef9b86ec03 fpga: tools: Fix CSV reporting in run_testbenches.py
Original-commit: 1c719bc0a6ff8ceba7da74ee42bcceb43d164d2b
2025-03-07 12:40:20 +01:00
Wade Fife 7566014c96 fpga: tools: Reformat run_testbenches.py
Original-commit: 0593f3c8e052f83e89d6269e952681fb83ef30df
2025-03-07 12:40:20 +01:00
Wade Fife 307ba63f99 fpga: lib: Fix trailing bytes in eth_ipv4_chdr_adapter
On the CPU to Ethernet path (c2e) in some configurations the trailing
bytes length was not being properly set in TUSER. This can lead to
extra bytes being added onto packets. Most of the time this is fine,
since the extra bytes would be ignored by the underlying protocols.
But when the packet was near the MTU size, it could lead to an
oversized packet that would get dropped by the network or host
computer.


Original-commit: 00d9a228f58b384798f0a1346fbab8f40b017a9c
2025-03-03 09:02:29 -06:00
Wade Fife 4eb1279423 fpga: lib: Enable TUSER in eth_ipv4_interface_wrapper
This wrapper was using TUSER for the number of trailing bytes, but it
wasn't properly enabled, which could cause it to be ignored in some
cases.


Original-commit: e7ebe601163d01d157bc3de9c2652952932e4a1c
2025-03-03 09:02:29 -06:00
Wade Fife 6fe021fdcd fpga: x400: Change NUM_DRAM_BANKS to 2 on X410 X4_400 image
This was set to 1 in UHD 4.7, but it must be 2 for all channels to
have sufficient bandwidth.


Original-commit: b012c18fd653714e84b1d4a86e27ff90fe13ae04
2025-02-27 10:53:07 -06:00
Niels Garibaldi cfa8afcf37 fpga: rfnoc: Fix DDC overflow issue
Fixed an issue where the DDC could experience an arithmetic overflow
when receiving a full-scale signal with non-zero DDS frequency.


Original-commit: 5030d0106b6d2230a1c28e72f765098c7916cf1b
2025-02-26 22:09:04 -06:00
Niels Garibaldi 2535aa4f1b fpga: sim: Add coerce function to PkgMath
Original-commit: 1f7ea94d8f9f1b9007fa1cd1d808f385139e264d
2025-02-26 22:09:04 -06:00
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