Commit Graph
577 Commits
Author SHA1 Message Date
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
Wade Fife e659f0cfdd Fix instances of sim preamble
Original-commit: d6ba2dfb5cb524ba2116cb0c3613af9650e57d03
2024-09-17 08:43:22 -05:00
Joerg Hofrichter e01ce08634 fpga: e31x/e320/n3xx/x400: Rework device tree file generation
... to support custom image core name, example:

    rfnoc_image_builder -y n310_rfnoc_image_core.yml -n my_custom_name

The device tree source files were renamed to match the target
name used in the Makefile.

    example:
        old: dts/usrp_n310_fpga_hg.dts
        new: dts/N310_HG.dts

The source file is used to compile the final .dts file in the BUILD_DIR.

    example: build-my_custom_name/N310_HG.dts

The final .dts file is copied to the BUILD_OUTPUT_DIR as part of the
post build steps and renamed to the custom image core name.

    example: build/my_custom_name.dts

This completes the change that was introduced with commit 2afc66f132.


Original-commit: d40db57f2e03c322ac6b0001e0a59d4a14a5a3b9
2024-09-13 08:44:30 -05:00
Max Köhler 264b33a416 fpga: x400: use parameter for RFDC info in RF core full
Original-commit: 97d108b6f9579865f1bbd62e1c9859d290337768
2024-09-09 10:18:59 -05:00
Wade Fife bea852caeb fpga: Remove build-usrp dirs when cleaning builds
Original-commit: 26553e3069d05102035e00861e8a7529efe50e00
2024-09-09 10:12:30 -05:00
Wade Fife 4b93935967 fpga: x400: Make DTS output match bitstream name
Original-commit: 2afc66f1325632a4bc0635217feefe666225f4e8
2024-09-09 10:12:30 -05:00
Wade Fife f13f084b15 fpga: Put dependencies first in Makefile SRCS list
Original-commit: 0de3eb63bba518d94058c985d759958caac388d5
2024-09-06 17:58:33 -05:00
Max Köhler 71c7b9044d fpga: x400: add register in 100G Eth TX path for timing
Original-commit: 7e457a190cf37b48090aebcc715a07851cbda9d2
2024-08-30 13:23:29 -05:00
Max Köhler 82545838b2 fpga: x440: fix conditional timing constraints
Original-commit: f407c1cc11f14fb3cef6975c62b6ba5c380aa9ce
2024-08-27 17:22:35 -05:00
Grant Meyerhoff 31ecc191a3 fpga: x440: correct crossbar replay port comments
Not a functional change. The comments for the replay block in the
crossbar_routes reflect a single replay block, but the FPGA image
actually has two replay blocks with half the number of ports as the
single block design.


Original-commit: 32efa102ce592ff16204b67b9aeb244e9589166e
2024-08-27 16:01:25 -05:00
Max Köhler ea4f2ff009 fpga: x440: refactor rf_core_full to use parameters on ports
Original-commit: 40bd20d240b2ee60ec58ad5a00a9ec9eebd1e9af
2024-08-21 08:06:41 -05:00
Max Köhler 08f8b269fa fpga: ci: remove color coding from FPGA bitfile name
Original-commit: eb5fe85748996675f2ec73e1f10857ba81e66c56
2024-07-11 15:29:53 +02:00
Martin Braun 0df7b0071c fpga: Fix warnings from building N3xx AA images
These bitfiles use four-port DRAM FIFOs and only connect two of those
ports. We skip the warnings as that is the intended build behaviour.


Original-commit: 52860eeb670da53c08dddb40dd950832b087acbe
2024-06-27 13:21:03 +02:00
Martin Braun fba65c68f7 image builder: Allow missing connections
The image builder will currently emit a warning if a NoC-block has
unconnected ports. This requires specifying `-W` to continue building,
which is the intended behaviour.

However, there are cases where there are legitimate reasons to not
connect a block, e.g., in the X310, where the radio block has 2x2 ports,
but we only connect 2 RX ports, and 1 TX port.

This adds a way to declare a "null" connection, which makes it explicit
in the image core YAML that a connection was deliberately omitted. Such
connections are created by connecting to a port called "_none_", e.g.:

```
connections:
  - { srcblk: _device_,  srcport: _none_, dstblk: radio0, dstport: in_1 }
```

The block name is irrelevant, but the schema requires providing a block
name.

This commit also amends the x3xx_radio_base.yml to avoid warnings when
building X3x0 bitfiles.


Original-commit: 6758966a5ac127a396e8b3b39f96aa484098e50f
2024-06-26 15:08:39 +02:00
Martin Braun d696c160db fpga: rfnoc: Harmonize x410_X4_400_rfnoc_image_core.yml
This file was repeating entries from x410_radio_base.yml, which none of
the other x410 image core YAML files do.


Original-commit: 1ba6fdaf9c3a17cbb46f976f9d4dd8349cf5adb7
2024-06-25 17:19:51 +02:00
Wade Fife 712142efdb fpga: sim: Initialize test_status
Initialize test_status for backwards compatability with testbenches
that don't call start_tb().


Original-commit: 72295360e65d989dd774deabc4add0a54eb6f97e
2024-06-20 11:35:27 +02:00
Ryan Volz 1451ae066b fpga/usrp3: Fix DC truncation bias by adding rounding to DDC chain.
A digital DC bias caused by various truncations in the DDC chain was
previously noticable with small signal levels, especially with high
decimation rates. This patch eliminates the bias by replacing the
truncation with rounding or simply keeping more bits for longer where it
makes sense.

This is essentially a forward port of a similar prior fix to the usrp2
DDC chain: https://github.com/EttusResearch/fpga/pull/4.

Signed-off-by: Ryan Volz <ryan.volz@gmail.com>


Original-commit: a57c162a0d11ab82a83c911a94272ceb6f7ff70a
2024-06-11 10:20:08 +02:00
Martin BraunandWade Fife 523212fa04 image builder: Add --build-ip-dir option
Co-authored-by: Wade Fife <wade.fife@ni.com>


Original-commit: 94b4de39d61ac4165ab18001b7d1a27c34698795
2024-06-11 10:20:08 +02:00
Wade Fife 0e6459250b fpga: tools: Force write when saving Vivado project file
Original-commit: 6abfd8a49aa3037a6784dd6acef801bed5ae3ed7
2024-06-11 10:20:08 +02:00
Wade Fife 8685870bf4 fpga: tools: Add --fpga-dir to repeat_fpga_build
Original-commit: 2ff91bcfc057d6d632c6a151ce2aed71d1103e91
2024-06-11 10:20:08 +02:00
Martin Braun 8d0cc11269 ci: Update FPGA CI pipelines to match new image builder
- Removes target names for X3x0 and X4x0 builds (these are now encoded
  in the YAML file)
- Change the image core YAML file names referenced in the pipeline YAMLs
  to match the contents of fpga/usrp3/top/x?00/*.yml
- Remove X410_XG_100 image since it is not a shipping image
- Add image_core_name arguments for all E320, E31x, N3xx targets


Original-commit: 50e07a5b42d4a244c12b5a13b51048573d0069ec
2024-06-11 10:20:08 +02:00
Martin Braun 6ef3795e42 fpga: Align build process for all targets
- All RFNoC capable targets now require rfnoc_image_builder to be built
- `make help` is updated for all targets to provide more useful and
  up-to-date information
- The FPGA manual is also updated
- All checked-in build artifacts are now removed from git
- axi_ram_fifo.yml is updated to provide include path information
  (required for building N3xx BIST images, which use this)


Original-commit: 28b994406d4c9547b1e2add62781b6a8162fdb74
2024-06-11 10:20:08 +02:00
Martin Braun ba5e431c5c fpga/mpm: x4xx: Add device DNA read capability
- Bumps FPGA compat from 8.2 to 8.3
- Adds three global motherboard registers to read the 96-bit device DNA
- MPM is updated to read these registers and update the device_info if
  compat version 8.3 is available


Original-commit: ad5f97f8284057b85ca98f47365c2a321edf7ece
2024-06-11 10:20:07 +02:00
Jonathon PendlumandMartin Braun d006250dc1 fpga: x400: Add PPS interface to X410/X440 BSP
This creates an IO port `pps` for X410, and two IO ports (`pps0`, `pps1`)
for X440 which allows modules inside the RFNoC image core to access the
FPGA. Note that accessing the PPS signal is generally not required for
RFNoC blocks which require access to timing.

Co-authored-by: Martin Braun <martin.braun@ettus.com>


Original-commit: c3525362643b56910692ad8ddc5d0e8cedd1869c
2024-06-11 10:20:07 +02:00
Martin Braun 6b3d10ad31 x300: Add support for reading device DNA
Original-commit: 14f487f1655516b0f10b40b94a16c8bf2dac33cc
2024-06-11 10:20:07 +02:00