Commit Graph
100 Commits
Author SHA1 Message Date
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
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
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
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 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
Javier Valenzuela 6d89320721 fpga: x400: Add netlist make flow
Original-commit: 789fa8f65727afabdeb4eea30a941015c6cd2ad5
2024-06-11 10:20:07 +02:00
Wade Fife 872de917bf fpga: x4xx: Replace Ethernet transport adapter
Original-commit: 34cee97e6206151e80d33e0e5367dcac62038a67
2024-06-11 10:20:07 +02:00
8669c68048 utils: image builder: Major update
Most important effect of this change: rfnoc_image_builder is now
required to build bitfiles, 'make' alone won't suffice any longer!

This is a huge changeset to the image builder that combines multiple new
features:

- There no longer is a separate edge file for the static router. The
  static routes are generated as a Verilog parameter directly into the
  rfnoc_core_kernel (which is also modified).
- image_builder.py is split up into several smaller files. Code is moved
  into yaml_utils.py, and the new files grc.py, builder_config.py
- Generic module support is added. Aside from noc blocks and stream
  endpoints, we can now instantiate arbitrary modules (they also require
  a YAML description file).
- To enable such modules, resets are now also tracked the same way that
  clock domains are.
- The ImageBuilderConfig config object now more closes matches the
  original YAML file. The attributes 'clk_domain_con' and 'block_con' are
  removed. Instead, the attributes 'connections' and 'clk_domains' are
  sanitized and amended with extra annotations. The templates are
  updated to reflect this change.
- IO ports can now carry parameters, e.g., to have variable wire widths
  based on the configuration.
- Many Pylint warnings were resolved.
- Add inheritance support for image core YAML files.
  This allows image core files to (recursively) inherit from other image
  core files. To do so, simply put an 'inherit' entry at the top of the
  file:
```yaml
inherit: 'x410_radio_base.yml'
```
- The inheritance feature is used as part of the image core files.
- Image core and DTS files are now generated as a build artefact into
  the build directory. This requires the usage of rfnoc_image_builder to
  build images. As a consequence, it is no longer required to check in
  image core Verilog files.
- As another consequence, rfnoc_image_builder is required to build
  bitfiles!
- Image flavours are no longer defined through Makefiles, but purely
  from the image core YAML files.
- Remove all image core YAML files that do not generate a shipping
  image. Because of the inheritance feature and the requirement to use
  the image builder, it is trivial to add new YAML files.
- Add support for transport adapters through the YAML files. Before,
  transport adapters were inferred from the make target (e.g.,
  X410_X4_200 would have four 10GbE links based on the 'X4' substring).
  Now, transport adapters are defined via the image core YAML.
- This feature is currently only used (or can be used) by the X4xx
  series. Older devices may or may not be ported to allow custom
  transport adapters in the future.
- Add parameters to the BSP YAMLs and the devices itself. This allows
  setting global parameters in the image core files. For example, the
  X4x0 devices use this to decide if they instantiate DRAM channels.
- DTS includes and constraint files can now be requested by
  blocks/transport adapter through their YAML files. They do no longer
  need to be listed in the Makefile.
- Support for secure image cores. These are image cores that allow
  incorporating RFNoC blocks that require license keys and thus can't
  live in an open-source environment. This solution adds the option for
  secure image cores without touching the open source feature set.
- Add --reuse option to allow manual editing of generated artefacts
- Allow IO signatures from any module: until now IO signatures had to be
  defined in a single file (io_signatures). This file will persist. In
  addition each module can add its own IO signature as with the same
  format the core IO signatures placed under the top level key
  `io_signatures`.  IO signatures are still maintained in a global
  dictionary. The consequence is that they can be shared among
  independent modules as well as they have to have a globally unique
  name. The image builder will warn about detected name clashes for the
  signatures.
- As a consequence, some less commonly used IO signatures were moved to
  their corresponding module YAML files.

Co-authored-by: Wade Fife <wade.fife@ni.com>
Co-authored-by: Lars Amsel <lars.amsel@ni.com>


Original-commit: a98ce2621e2a2dc25535fc700b49bfcb00b8eb59
2024-06-11 10:20:07 +02:00
Max Köhler 75a2526efd fpga: x400: zbx: Set Locale for ZBX Lattice build
Original-commit: 02c1c06f708e035c9ce17d32832944bc94faf099
2024-05-21 20:37:52 -05:00
Max Köhler 10f0bc2e79 fpga: tools: Fix VHDL and Verilog types in modify_bdtcl
Original-commit: 041eef3472e0440730708053d47b1fb7b793c682
2024-05-18 21:29:35 -05:00
Wade Fife 1a4d0543f6 fpga: tools: Fix VIVADO_PROJECT variable
Original-commit: 44e7651feee257319dff00577920fe5771473d62
2024-04-02 22:48:02 -05:00
Wade Fife 822d1bd26d fpga: Add option to specify build output directory
Original-commit: 58fb72a82da8bb638dbdfe44d3be84e8382c10a2
2024-03-15 20:08:15 -05:00
Wade Fife 51865aa003 fpga: tools: Add option to save Vivado project
Original-commit: 8f9beccebe54a21d4993f8298c184426671624b0
2024-03-15 20:05:39 -05:00
Wade Fife 5c23c71e44 fpga: utils: Use default image core name
Original-commit: e7167fd0448f65c07b4a061e2bb1678ce2d06031
2024-03-15 00:32:53 -05:00
Max Köhler a8937b3500 fpga: tools: Fix -quiet in modify_bdtcl
Original-commit: 342221055021cbb63387362e26184d24d61746da
2024-03-13 21:30:52 -05:00
Max Köhler e9700b2081 fpga: x4xx: add option for incremental Vivado build
So far only the implementation after opt_run is affected by the changes.


Original-commit: 4c56b1b55ff3ae10561bd5efc83e3bb9a6a818d6
2024-03-12 16:03:23 -05:00
Max Köhler 275373c06b fpga: tools: viv_ip_utils to update hdl_sources.tcl
Original-commit: 1e8521f52ee9ba778d4240f1a0a197642f3cee8d
2024-03-08 08:23:49 -06:00
Max Köhler 7be838b24c fpga: x400: zbx: Improve Lattice make flow
Original-commit: fa8559bb0f334d80e08798d415117cedf86be923
2024-03-05 20:07:50 -06:00
Martin Braun e2c442ab8c fpga: Update tooling to use image builder instead of make
This modifies repeat_fpga_build.py such that it can take a YAML file as
input, not just a make target. It will then use the image builder to
prepare the build and generate a valid make command, which in turn is
used to build FPGA images repeatedly.


Original-commit: 09f3453f39363870f1c03ef1c917a0dedb7598df
2024-02-25 16:54:12 -06:00
Martin Braun f4e2c89e4c fpga: utils: Add update_image_cores.sh
This utility will regenerate all the image core .v files from the
available YAML files. It won't rebuild bitfiles.


Original-commit: 4861318d3bdccd8d1baa627a8473eb34f76583b1
2024-02-15 10:18:34 -06:00
Martin Braun 27b06f86fb fpga: tools: Spruce up launch_vivado.py
- We add documentation for the dev_config.json file
- Fix Pylint issues


Original-commit: 7789c136fbf996451b8621da4b277a59193913fe
2023-12-13 17:28:09 -06:00
Martin Braun c98c7ab88d fpga: Remove dupes from DESIGN_SRCS
In the build Makefiles, this adds a function (uniq) which removes
duplicate entries from lists. We apply this to the DESIGN_SRCS passed
to the Vivado build process. This eliminates some warnings from
duplicate source files caused by redundantly referencing source files in
the Makefiles, possibly because they are listed in more than one source
file variable.


Original-commit: 1944263412d329d53b32a17e9735b79e59e319d7
2023-12-13 17:28:09 -06:00
Martin Braun ce0ddc6dac fpga: Replace references to python -> python3
In several cases, we call `python` explicitly. On many modern operating
systems (e.g., Ubuntu 22.04), this command no longer exists, and if it
does, it's often an alias to python3.

Because the python3 executable has been around for so long, simply
using that directly (instead of, e.g., autodetecting the OS preferences)
is a simple fix that immediately allows building bitfiles, e.g. for the
B2xx series, on more recent OSes.


Original-commit: 356cd172bb5ae0d043825bd1f4dffbd6646ec3d2
2023-12-05 15:43:08 -06:00
Wade Fife 02f2a821f9 fpga: tools: Add X440_X4_200 to X440 package
Original-commit: 4d8f9f1818f25a5baed749bab416b5bf8357ebd8
2023-10-25 09:44:29 -05:00
5cadf901c7 fpga: Add X440/FBX support
Co-authored-by: Martin Braun <martin.braun@ettus.com>
Co-authored-by: Wade Fife <wade.fife@ni.com>
Co-authored-by: Ryan Marlow <ryan@lmarlow.com>


Original-commit: 596760a12e4834e47589c12f8a4fd083aa2f7c25
2023-06-12 10:27:29 -05:00
adf6f576c6 mpm/fpga: x4xx: Major updates in preparation for future devices
FPGA:
- Split up MB registers that control daughterboard specific settings so
  that daughterboards 0 and 1 could have different setings, in
  preparation for future devices that require different settings.
  This requires a compat number bump to 8.0.
- Add registers for additional RFDC information, including the
  block/tile mapping of the individual channels, and information about
  resampling capabilities
- Identify sections of code that would be specific to X410/ZBX and move
  them to their own headers, so it's trivial to add device-specific
  sections of code instead for other devices in the future.
  - This includes constraints for clocks and I/O pins.
- Remove ability to do timed ctrlport transactions to the MB CPLD, this
  was unused and possibly broken.
- Move daughterboard-specific code into its own code location
  (dboards/zbx)
- Move X410-specific register documentation to its own location
  (doc/X410)
- Refactor Makefiles to split out X410/ZBX specific components and allow
  switching between device types
- Add 512-bit AXI interconnects
- Make number of timekeepers configurable (X410 keeps the single
  timekeeper)

MPM:
- Required compat is bumped to 8.0
- Now supports new registers for detecting DSP capabilities and
  multi-rate settings for the daughterboards
- Adds MMCM controls (currently unused)

Co-authored-by: Wade Fife <wade.fife@ni.com>
Co-authored-by: Ryan Marlow <ryan@lmarlow.com>
Co-authored-by: Martin Braun <martin.braun@ettus.com>
Co-authored-by: Humberto Jimenez <humberto.jimenez@ni.com>


Original-commit: c1d268917ea65dd9c5a42366014cb96d3c025223
2023-05-23 09:06:17 +02:00
Wade Fife a08d0c4bd5 fpga: tools: Add X410_UC_200 image to X410 package
Original-commit: fb16ec77dc36e6d24b6ada6d7f9ec0484499b0ce
2023-02-24 08:07:17 -06:00
Wade Fife eec959f814 fpga: Add BUILD_BASE_DIR option to makefiles
Adds a BUILD_BASE_DIR makefile variable that allows you to specify the
base directory for FPGA build outputs. This allows you to put the
output from each run of make into a unique directory, or to run
multiple instances of make in parallel with each build's output being
put in a different directory. For example:

make X310_XG BUILD_BASE_DIR=/path/to/builds


Original-commit: bc6db8409ba756bbad0d0c158ffb00c614b58fd9
2023-02-09 07:38:49 -06:00
Wade Fife c525cba09c fpga: tools: Add repeat_fpga_build.py
This script allows you to repeatedly run an FPGA build until it
successfully meets timing.


Original-commit: f72e8daeecf7dff92dce47be0b956699b5e40a16
2023-02-07 23:04:12 -06:00
Wade Fife f9d20d2a7f fpga: tools: Fix error detection in run_testbenches.py
This fixes recognition of $error and $fatal statements in the output of
XSim when running run_testbenches.py. XSim apparently prints a "shift
in" character (0x15) as part of its error statements, so the regular
expression was not matching.


Original-commit: ee36d7fabcf73f773edae00fbb1604a600db992d
2023-01-09 15:40:17 -06:00
Wade Fife ddcc0b1211 fpga: tools: Detect check_timing issues during build
Original-commit: 7f13abe9b48b6aedbbfb726732faa16c305be0ac
2022-11-18 14:53:41 -06:00
Wade Fife 6dad16ccab fpga: Fix Vivado version check in viv_hardware_utils
Original-commit: b5f324f1df7ac3a30c7669efa73e58aaf02e1f78
2022-09-08 11:53:44 -05:00
Wade Fife 82739c1dae fpga: lib: Add eth_ipv4_interface_tb
Original-commit: 4f9a71f12204728446723f171d4cf0edcbf5027a
2022-08-29 17:01:45 -05:00
Humberto Jimenez f53e3f27fc fpga: tools: Fix HLS IP builder for Vivado 2021.1
Original-commit: 9300a0718274ede56cda3f48e43c9f0e1df4674b
2022-08-25 13:55:30 -05:00
Sam O'Brien 959ce49389 fpga: tools: Allow IP renaming with viv_ip_xci_editor.py
Original-commit: e74f56b95a5ba8359468f2c4770e828731b8e1ef
2022-08-25 13:55:30 -05:00
Sam O'Brien 187c81719b fpga: tools: Add utility to upgrade TCL-based BD
Original-commit: a99bed698576c1e0ab6c6c6aae68d5da75e6bd75
2022-08-25 13:55:30 -05:00
Javier Valenzuela 9513397e17 fpga: tools: Lattice build flow clean-up
Original-commit: fd2dd921a2af4bff1a26c43385b3942bc143f934
2022-08-03 14:28:21 -05:00
Javier Valenzuela a6fc53b4e6 fpga: x400: zbx: Add support for XO3 CPLD variant.
The main changes included are:
- Variant-dependent pin-out instantiation.
- Update clocking scheme in top level file
  to include XO3 PLL
- Add ability to shift outgoing data for
  the GPIO communication interface with
  the X410 FPGA.
- Include project files required to build
  the XO3 variant of the ZBX CPLD.
- Add build flow for Lattice Diamond designs.
- Add ability to build XO3 variant of ZBX CPLD.


Original-commit: 2c7813acb21383f302353a1b6cf57f0946fa0b6b
2022-06-28 16:33:05 -05:00
Virendra Kakade c7938de574 REVERT images: zbx lattice cpld image manifest
Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>


Original-commit: e7c2035df2ead4939a585e649675e895562cf917
2022-05-16 06:18:09 -07:00
Humberto Jimenez e6a3c9598b fpga: tools: Add CG_400 image to X410 binaries package
Original-commit: cb1c7ec47ec69523968724b776b73c8299add478
2022-03-15 08:49:25 -05:00
Martin Braun d706b50681 images: Remove references to N230
USRP N230 is no longer supported starting with UHD 4, and thus, we can
remove it from the image manifest. This will no longer download N230
images when calling uhd_images_downloader from UHD 4.


Original-commit: f1f6d8eac52bfecd840ace95c2d357641ae3b09c
2022-02-15 14:07:53 -06:00
Martin Braun 43128791b4 images: Add utilization report files to B2xx image files
Original-commit: ac286920f0d4f3b7b26ea3cfc7a9e11ae10346d1
2022-02-10 11:35:47 -07:00